Ich möchte eine Spalte in einer Listview aktualisieren, wenn das Kontrollkästchen in der gleichen Zeile aktiviert ist. Die Checkbox ist Teil einer Reihe.Aktualisieren Sie eine Listview-Spalte, wenn das Kontrollkästchen aktiviert ist
Ausblick:
Kontrollkästchen:
<CheckBox Tag="{Binding ID}" Checked="chbAccount_checked" Unchecked="chbAccount_Unchecked"/>
Textblock in der Spalte, die aktualisiert werden müssen:
<TextBlock Text="{Binding MyColumnValue }" />
-Code Behind:
private void chbAccount_checked(object sender, RoutedEventArgs e)
{
CheckBox chb = sender as CheckBox;
int Id= Convert.ToInt16(chb.Tag);
ViewModel.UpdateColumnValue(Id);
myListView.ItemsSource = ViewModel.Accounts;
this.myListView.UpdateLayout();
}
Ansichtsmodell:
public void UpdateColumnValue(int Id)
{
foreach(var a in Accounts)
{
if(a.ID == Id)
{
a.MyColumnValue = "Yes";
}
}
}
Die Kontoliste wird aktualisiert, aber die Listenansicht zeigt die geänderten Werte in der Spalte nicht an. Ich habe versucht, Listenansicht von listview.item.refresh() zu aktualisieren. Hat nicht funktioniert.
Bitte helfen. Vielen Dank!
Sie verwenden bereits Bindungen. Warum nicht die gebundene Eigenschaft aktualisieren? Wenn Sie INotifyPropertyChanged implementieren, müssen Sie nur Ihre MyColumnValue-Eigenschaft aktualisieren. Das ist ein Vorteil des MVVM-Musters. –
Ich war nicht vertraut mit INotifyPropertyChanged. Ging durch einige Tutorials. Ich denke, dass ich jetzt damit umgehen kann. Vielen Dank. :) – sandaru
Und "ja" es funktioniert :) :) :) – sandaru