WPF Datagrid OnPropertyChanged导致SelectionChanged事件

时间:2015-04-17 12:35:35

标签: wpf datagrid selectionchanged

我有一个绑定到模型的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事件。

当我从代码更改模型时,有什么方法可以阻止事件触发,但是当用户点击网格中的项目时让它通过?

也许我可以使用不同的事件来手动选择网格中的项目?

非常感谢。

1 个答案:

答案 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());
}