当ListView中的数据发生更改时,WPF会获得“旧”值

时间:2015-07-31 08:25:33

标签: c# wpf listview treeview uielement

我有TreeView与对象。当我选择这些树的项目时,比其他控件 - ListView显示为所选对象的项目属性。我想在TreeView选择更改为其他对象时保存属性的值。 那么,WPF中是否有一种很好的方法来获取ListView控件中“更改前”项的值?我现在的想法是覆盖PreviewMouseDown以检查用户是否单击树节点。按照上帝的方式,我的意思比我的好。也许在ListView模板中的东西? 表示不需要使用PreviewMouseDown改变我的想法也是一个很好的答案。

1 个答案:

答案 0 :(得分:0)

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

在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,
    }
}