我是WPF的新手,所以请原谅我的无知。我在网上阅读过,为了约束工作,可观察的收藏应该是公共财产。所以,这是我到目前为止所做的:
我有一个我在其中声明了可观察对象的类:
public ObservableCollection<InventoryDto> invCollection { get; set; }
public InventoryDto()
{
invCollection = new ObservableCollection<InventoryDto>();
}
public ObservableCollection<InventoryDto> observableList
{
get
{
return this.invCollection;
}
set
{
invCollection = value;
OnPropertyChanged("observableList");
}
}
然后,在我看来,我有一个这样的绑定:
ItemsSource="{Binding observableList,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
在视图后面的代码(即view.xamls.cs)中,我正在填充可观察对象:
foreach (var item in inventoryList)
{
invDto.invCollection.Add(new InventoryDto { location = item.location.Name, onHand = item.OnHand.ToString(), committed = item.committed.ToString() });
}
但是,除非添加以下代码,否则我不会在网格中看到任何数据:
InventoryDataGrid.ItemsSource = invDto.observableList;
首先,我发现在后面的代码中添加此代码很奇怪,而我已经在xaml中指定了ItemsSource。其次,此代码填充了网格。但是,当我从db中删除一行时,尽管我已指定BindingMode = TwoWay,但在网格中也不会删除该行。
请让我知道我在这里想念的东西。