Dies ist meine einfache Xaml, die in einem Textfeld das Alter der ersten Person in einer Sammlung von Personen zeigt. Ich verstehe nicht, dass ich nach dem Klick das Alter nicht ändere.Wpf - Problem mit der Bindung an eine Sammlung Artikel
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="132*" />
<RowDefinition Height="179*" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding Persons[0].Age}" />
<Button Grid.Row="1" Click="Button_Click">Change Age</Button>
</Grid>
Dies ist der Code hinter der XAML:
public partial class MainWindow : Window
{
public ObservableCollection<Person> Persons { get; set; }
public MainWindow() {
Persons = new ObservableCollection<Person>();
Persons.Add(new Person{Age = -1});
DataContext = this;
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e) {
(Persons[0] as Person).Age = 5;
}
}
das ist Klasse Person:
public class Person : INotifyPropertyChanged
{
private int _age;
public int Age
{
get { return _age; }
set
{
_age = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Age"));
}
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
Ihr Code funktionierte gut für mich, als ich es gerade in ein WPF-Projekt in Visual Studio 2010 eingefügt habe. Welche Version von WPF und Visual Studio verwenden Sie? –
Arbeitete ganz gut für mich. Kopieren/Einfügen zum Projekt und es funktioniert wie ein Zauber. Wenn Sie einen Haltepunkt für "Age" festlegen, wird PropertyChanged oder null ausgelöst? –