我有一个ListView
绑定到我创建的类的列表。在进行操作时,应该从列表中添加/删除项目,但我的ListView
未更新,即使我使用了INotifyPropertyChanged
。将新项目添加到列表后,ListView未更新
如果我使用ObservableCollection
,它的作品,但我需要有列表排序,ObservableCollection
没有做分拣WPF4.0 :(
什么办法可以让列表绑定工作?为什么没”吨甚至虽然我用INotifyPropertyChanged
它的工作
XAML:
<ListView BorderThickness="0" ItemsSource="{Binding SelectedValues, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Padding="5">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn DisplayMemberBinding="{Binding Value}"></GridViewColumn>
VM:
private List<CheckBoxItem> _selectedValues = new List<CheckBoxItem>();
public List<CheckBoxItem> SelectedValues
{
get { return _selectedValues; }
set
{
_selectedValues = value;
OnPropertyChanged();
}
}
private void UnselectValueCommandExecute(CheckBoxItem value)
{
value.IsSelected = false;
SelectedValues.Remove(value);
//OnPropertyChanged("SelectedValues");
OnPropertyChanged("IsAllFilteredValuesSelected");
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
CheckBoxItem
类包含2个属性,Value
和IsChecked
,我不认为这里是相关的。
所以基本上,我有一个按钮,它使用UnselectValueCommandExecute
从列表中删除项目,我应该看到在UI中更新的列表,但我不是。
当我调试时,我可以看到SelectedValues
列表更新,但不是我的用户界面。
把你的代码Xaml和VM! – Usama 2015-02-10 08:44:25
这取决于你如何实现INotifyPropertyChanged。如果你已经像其他任何属性那样完成了它,那么当整个集合对象本身发生变化时,它将会触发,而不是在其元素被修改时触发。 – mcy 2015-02-10 08:44:53
向我们展示您的c#代码与您的列表。你的XAML也会很棒。 – Tomtom 2015-02-10 08:46:29