Bonsoir à tous !
Voilà je débute avec WPF, je voudrais à terme être capable d'afficher des objets de classes différentes (des points, des segments, des polygones) dans un même canvas...
Bref l'heure est à la découverte, et j'ai tenté d'utiliser un CompositeCollection contenant seulement une collection "Entities" dans une ListBox pour commencer... et ça ne fonctionne pas, le programme compile sans problème mais ma liste reste vide !
Mon binding me semble pourtant bon puisque la liste se remplie lorsque je l'utilise "classiquement" comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<ListBox.ItemsSource ItemsSource="{Binding Entities}">
Voici le code XAML:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<Window x:Class="ComposantCarte.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ComposantCarte"
    Title="Window1" Height="300" Width="300">    
 
    <WrapPanel Height="146" Margin="10,10,68,0" Name="wrapPanel1" VerticalAlignment="Top" Width="262">        
        <ListBox Height="126" Name="listBox1" Width="222" >            
            <!--<ListBox.ItemsSource ItemsSource="{Binding Entities}">--> <!-- ça fonctionne-->                        
            <ListBox.ItemsSource>
                <CompositeCollection>
                    <CollectionContainer Collection="{Binding Entities}"/><!--mais pas ça !-->
                </CompositeCollection>
            </ListBox.ItemsSource>            
        </ListBox>        
    </WrapPanel>    
</Window>
et voici le "code behind" C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace ComposantCarte
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            ObservableCollection<Entity> collEntities = new ObservableCollection<Entity>();
            collEntities.Add(new Entity());
            collEntities.Add(new EntPoint(){X=20,Y=40});
            collEntities.Add(new EntPoint() { X = 20, Y = 60 });
            collEntities.Add(new EntPoint() { X = 20, Y = 80 });
            this.DataContext = new { Entities=collEntities };
        }
    }
}
Une dernière chose, d'après ce lien le CollectionContainter comporte un bug, mais je ne pense pas que ce soit le cas ici ?? (je n'ai pas d'erreur comme reporté dans le bug)
http://social.msdn.microsoft.com/For...8-7ae9f7dca88a

Merci à vous de m'éclairer