WPF 数据网格属性已更改导致选择已更改事件



我有一个绑定到模型的 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());
}

最新更新