当 ListView 中的数据更改时,WPF 获取 "old" 值

WPF gets "old" value when data in ListView change

我有带对象的 TreeView。当我 select 这些树的项目时,比其他控件 - ListView 显示为 selected 对象的项目属性。我想在 TreeView selection 更改为其他对象时保存属性值。 那么,WPF有没有什么好的方法可以获取ListView控件中"just before changing"项的值呢?我现在的想法是覆盖 PreviewMouseDown 以检查用户是否单击树节点。天哪,我的意思是比我的好。也许 ListView 模板中有什么? 表明无需使用 PreviewMouseDown 改变我的想法也是一个很好的答案。

能否提供相关的代码片段?我试着回答你的问题,但我不确定我是否理解正确。 如果将 TreeView 的 SelectedItem 绑定到 属性(a.e。使用 MVVM 模式),则可以在实际设置项目之前保存值。

虽然在 setter 中这样做并不是很好,因为它变得相当大。我会有这样的 setter:

private Foo bar;
public Foo Bar
{
    get { return bar; }
    set
    {
        OnPropertyChanging("Bar");
        bar=value;
        OnPropertyChanged("Bar");
    }
}

然后您可以收听自己的 PropertyChanging 事件并在那里执行您的操作:

private void this_PropertyChanging(object param, PropertyChangingEventArgs e)
{
    switch(e.PropertyName)
    { 
        case "Bar":
            //Do you stuff
         break,
    }
}