我有一個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