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,删除处理程序就停止被调用