修改源时,我的数据网格视图不会更新。
在我的View.xaml中:
<DataGrid IsReadOnly="True" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" SelectedItem="{Binding SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Header="Date" Width="*" Binding="{Binding ProductHistoryInOutDate}" />
<DataGridTextColumn Header="Quantité" Width="*" Binding="{Binding ProductHistoryQuantity}" />
</DataGrid.Columns>
</DataGrid>
在我的ViewModel.cs中:
private ObservableCollection<ProductHistory> _Items;
public ObservableCollection<ProductHistory> Items
{
get { return _Items; }
set
{
_Items = value;
RaisePropertyChanged("Items");
}
}
[编辑]
命令:
public RelayCommand Remove
{
get
{
if (_Remove == null)
{
_Remove = new RelayCommand(
() => { _UOF.ProductHistoryRepository.Delete(this.SelectedItem);_UOF.Commit(); },
() => SelectedItem != null);
}
return _Remove;
}
}
删除按钮:
<Button Content="Delete" Command="{Binding Path=Remove}" />
答案 0 :(得分:2)
我能想到的唯一解释是你在命令执行代码中缺少Items.Remove(this.SelectedItem)
。
我尝试从你的代码制作和示例,如果我添加了它,它可以正常工作,observable collection没有问题。
由于我没有RelayCommand和RaisePropertyChanged()的代码,我不得不手动实现它来试用它,但我认为它来自某个库,它工作正常。
以下是它的样子:
public RelayCommand Remove
{
get
{
if (_Remove == null)
{
_Remove = new RelayCommand(
() => { Items.Remove(this.SelectedItem); _UOF.ProductHistoryRepository.Delete(this.SelectedItem); _UOF.Commit(); },
() => SelectedItem != null);
}
return _Remove;
}
}