2009-11-02 4 views
1

Je sais que cela a été demandé de différentes manières à plusieurs reprises, mais je ne comprends tout simplement pas. Pourquoi ne vois-je pas mes chaînes de test dans la liste?ObservableCollection -> Listbox

.cs

public partial class Window1 : Window 
{ 
    public ObservableCollection<string> myList = new ObservableCollection<string>(); 

    public Window1() 
    { 
     InitializeComponent(); 

     myList.Add("test1"); 
     myList.Add("test2"); 
    } 
} 

.xaml

<Window x:Class="WpfApplication.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300" 
    x:Name="thisWindow"> 
    <Grid> 
     <ListBox Name="MyListBox" ItemsSource="{Binding myList, ElementName=thisWindow}"/> 
    </Grid> 
</Window> 

Répondre

4

Parce que votre "myList" est un champ. La liaison WPF fonctionne uniquement avec les propriétés. Modifier la déclaration de votre liste:

private ObservableCollection<string> _myList = new ObservableCollection<string>(); 

public ObservableCollection<string> myList { get { return _myList; } } 
+0

yup, je suis évidemment à ce nouveau. Merci. –

1

Essayez cette façon:

public Window1() 
{ 
    InitializeComponent(); 

    myList.Add("test1"); 
    myList.Add("test2"); 

    this.DataContext = myList; 
} 

puis en XAML:

<ListBox Name="MyListBox" ItemsSource="{Binding}"/>