【发布时间】:2013-04-12 16:04:25
【问题描述】:
我正在尝试使用 MVVM 模式处理数据网格。问题是当我第一次在数据网格中选择一个项目时,数据网格将正确更新源属性,然后我选择另一个项目,源属性不更新。这是我在 xaml 中的绑定:
<DataGrid ItemsSource="{Binding Customers}"
SelectedItem="{Binding SelectedCustomer, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False">
ViewModel 代码:
public Customer SelectedCustomer
{
get { return _selectedCustomer; }
set
{
if (value != _selectedCustomer)
{
_selectedCustomer = value;
NotifyOfPropertyChange(() => SelectedCustomer);
}
}
}
提前致谢!
【问题讨论】:
-
您确定您在
SelectedCustomer中设置的Customer是Customers孩子之一。请注意SelectedCustomer必须与Customers子代之一的引用不是同一客户。 (同一个参考不是客户)这是非常重要的。 -
@MoHaKa 感谢您的评论。我确定他们引用的是同一个客户。
-
第一次选择后输出窗口中是否出现任何绑定错误?为了清楚起见,您是说 SelectedCustomer 在第一次选择后没有更新,对吗?看起来您可能正在使用 CaliburnMicro 您是否尝试过设置 x:Name="Customers" 并查看 CM 是否可以为您处理绑定?
-
@JasonMassey 没有绑定错误。是的,SelectedCustomer 在第一次选择后没有更新。绑定不是由 CM 处理的,实际上是数据网格绑定到自定义对象列表。