我的问题是: 我首先使用EF代码并且我得到了一个主要细节情况,主人有一个孩子,他们是数据网格的itemsSource,如下所示:
<DataGrid ItemsSource="{Binding Path=Transaction.StockItems,Mode=TwoWay}"
SelectedItem="{Binding Path=StockItem, Mode=TwoWay}"
AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<mui:DataGridTextColumn Width="0.12*" Binding="{Binding Name}"/>
<mui:DataGridTextColumn Width="0.12*" Binding="{Binding Cod}"/>
<mui:DataGridTextColumn Width="0.12*" Binding="{Binding Cost}"/>
<mui:DataGridTextColumn Width="0.15*" Binding="{Binding Qt}"/>
</DataGrid.Columns>
</DataGrid>
在我的ViewModel中,我获得了Transaction
属性的属性,如下所示:
private tTran_t;
public tTransaccion Transaction
{
get { return _t; }
set { _t= value; RaisePropertyChanged("Transaction"); }
}
在我的ViewModel的其他方法中,我对集合执行Add()
,如下所示:
Transaction.StockItems.Add(myNewLine);
RaisePropertyChanged("Transaction");
在我的模型中,Transaction.StockItems
的定义是ICollection
。
问题:数据网格永远不会更新
我想这是因为永远不会调用RaisPropertyChanged()
,因为从未设置过集合,但正如您所见,我确实调用了RaisPropertyChanged()
对象的Transaction
。 / p>
提前致谢
答案 0 :(得分:0)
向集合添加项目不会“更改”对象本身。设置集合本身时会引发RaisepropertyChanged。所以你需要做的是为你的集合参考分配一个新的集合。首先,您将项目添加到临时集合,然后执行transaction = new collection(temporaryCollection)
,然后您的UI将收到更改通知。