wpf 3.5和wpf 4之间的绑定更改
关于以下代码wpf 3.5和wpf 4之间的绑定更改,wpf,binding,propertychanged,Wpf,Binding,Propertychanged,关于以下代码 public class ViewModel : INotifyPropertyChanged { public int Model { get; private set; } public ViewModel(int _model) { Model = _model; } PropertyChangedEventHandler m_propertyChange
public class ViewModel : INotifyPropertyChanged
{
public int Model { get; private set; }
public ViewModel(int _model)
{
Model = _model;
}
PropertyChangedEventHandler m_propertyChangedEventHandler;
public event PropertyChangedEventHandler PropertyChanged
{
add
{
m_propertyChangedEventHandler += value;
Console.WriteLine("Add");
}
remove
{
m_propertyChangedEventHandler -= value;
Console.WriteLine("Remove");
}
}
}
public partial class Window1 : Window
{
public ObservableCollection<ViewModel> ViewModels { get; private set; }
public Window1()
{
ViewModels = new ObservableCollection<ViewModel>() { new ViewModel(1), new ViewModel(2), new ViewModel(3) };
DataContext = this;
InitializeComponent();
}
protected override void OnPreviewMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnPreviewMouseDoubleClick(e);
Content = new Button();
}
}
<Window x:Class="WpfApplication97.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ListBox ItemsSource="{Binding ViewModels}"
DisplayMemberPath="Model"/>
</Window>
公共类视图模型:INotifyPropertyChanged
{
公共int模型{get;private set;}
公共视图模型(int\U模型)
{
模型=_模型;
}
不动产变更管理人m_不动产变更管理人;
公共事件属性ChangedEventHandler属性已更改
{
添加
{
m_propertyChangedEventHandler+=值;
控制台。写入线(“添加”);
}
去除
{
m_propertyChangedEventHandler-=价值;
控制台。写入线(“删除”);
}
}
}
公共部分类Window1:Window
{
公共ObservableCollection视图模型{get;private set;}
公共窗口1()
{
ViewModels=new ObservableCollection(){new ViewModel(1)、new ViewModel(2)、new ViewModel(3)};
DataContext=this;
初始化组件();
}
PreviewMouseDoubleClick上受保护的覆盖无效(鼠标按钮Ventargs e)
{
基于预览鼠标双击(e);
内容=新建按钮();
}
}
双击时,windows内容将被替换,这将清理现有控件绑定(使用PropertyChanged注销并输入remove访问器)
它在.NET4.0下运行,但在3.5下不能正常工作(在这种情况下,只有关闭窗口才能调用Remove)
这是为什么?我能在3.5中获得相同的行为吗?在.net 4.0和.net 3.5中都能为我工作真的吗?我刚刚尝试了一个新项目(使用vs2010),以默认的.NET4作为目标框架,并对其进行了修改,但一旦我将目标框架设置为3.5,删除处理程序就停止被调用