我有一个绑定到模型的 WPF 数据网格。
在模型中,我有一个定义为
public String status
{
get
{
return m_status;
}
set
{
m_status = value;
OnPropertyChanged("status");
}
}
此属性通过 OnPropertyChanged 通知网格更改。
我还处理 SelectionChanged 事件以触发不同的活动。
SelectionChanged="gridSongs_SelectionChanged"
private void gridSongs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Console.WriteLine("gridSongs_SelectionChanged " + sender.ToString());
}
在测试过程中,我注意到每次我在代码中更改属性"status"时,网格都会自动更新(这是我想要的),但也触发了 SelectionChanged 事件。
当我从代码更改模型时,有什么方法可以阻止事件触发,但在用户单击网格中的项目时让它通过?
也许我可以使用不同的事件来手动选择网格中的项目?
提前非常感谢。
当我从代码更改模型时,有什么方法可以阻止事件触发,但在用户单击网格中的项目时让它通过?
否,但有一个简单的解决方法。添加一个 private bool isLocal
变量,并在进行任何更改之前将其设置为 true
,然后再返回到false
:
isLocal = true;
status = "Some Value";
isLocal = false;
然后,在SelectionChanged
处理程序中,检查此变量,并且仅在false
时才做出反应:
private void gridSongs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!isLocal ) Console.WriteLine("gridSongs_SelectionChanged " + sender.ToString());
}