WPF ListView Binding ItemsSource dans XAML
J'ai un simple XAML page avec une liste sur il définit comme ceci
<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding People}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
<GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
</GridView>
</ListView.View>
</ListView>
Dans le code du retard, je n':-
public ObservableCollection<Person> People { get; set; }
public ListView()
{
InitializeComponent();
this.People = new ObservableCollection<Person>();
this.People.Add(new Person() { Name = "John Doe", Age = 42, Mail = "[email protected]" });
this.People.Add(new Person() { Name = "Jane Doe", Age = 39, Mail = "[email protected]" });
this.People.Add(new Person() { Name = "Sammy Doe", Age = 7, Mail = "[email protected]" });
}
Si j'ai mis le ItemsSource de ma listview dans le code-behind, comme ce
lvUsers.ItemsSource = this.People;
il fonctionne et ma grille est affichée comme prévu
Cependant si je supprime cette ligne et d'essayer de lier dans le XAML
<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding People}">
il ne fonctionne plus.
Pourquoi ne pas la liaison dans le code XAML de travail?
source d'informationauteur David | 2014-10-14
Vous devez vous connecter pour publier un commentaire.
Si vous ne le faites pas déjà, dans le code XAML par exemple, vous devez définir
DataContext
pour votre liaison. Aussi depuisPeople
bien ne pas mettre en œuvreINotifyPropertyChanged
vous pouvez créer cette liste avant deInitializeComponent
à tout le moins, avant de définirDataContext
pour être sûr que la liste est prête lorsque la liaison est évaluée. Vous pouvez ajouter à votreObservableCollection
plus tard, mais si vous le créer à partir de ce point sans en avertir l'INTERFACE utilisateur, ça ne marchera pasMettre cette ligne après le code existant dans le code xaml.cs
et de remplacer votre xaml avec
à