当 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,
}
}
我有带对象的 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,
}
}