WPF Datagrid OnPropertyChanged 导致 SelectionChanged 事件

WPF Datagrid OnPropertyChanged causes SelectionChanged event

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

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

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

非常感谢。

Is there any way I can stop the event from firing when I change the model from code but let it go through when user clicks an item in the grid?

否,但有一个简单的解决方法。添加一个 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());
}