我有一个绑定到模型的WPF Datagrid。
在模型内部,我有一个定义为
的属性 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事件。
当我从代码更改模型时,有什么方法可以阻止事件触发,但是当用户点击网格中的项目时让它通过?
也许我可以使用不同的事件来手动选择网格中的项目?
非常感谢。
答案 0 :(得分:1)
当我从代码更改模型时,有什么方法可以阻止事件触发,但是当用户点击网格中的项目时让它通过?
不,但有一个简单的解决方法。添加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());
}