C# .NET4.5将组合框绑定到字典问题。WPF
我正在维护一个内部WPF应用程序,它有一个绑定到ViewModel中Dictionary属性的组合框。该应用程序是用VS2010 targeting.NET4.0编写的,一切正常 用户机器现在自动更新到.NET4.5&这个特定的组合框在运行时不显示UI中的值。这是应用程序中唯一绑定到字典的绑定。我在VS2013中搜索了输出窗口,但没有明显的绑定错误等。有一种方法可以填充字典&所有内容都正确填充了&我已经实现了INPC。NET4.5绑定到字典的方式有什么不同吗 Xaml:C# .NET4.5将组合框绑定到字典问题。WPF,c#,wpf,mvvm,dictionary,combobox,C#,Wpf,Mvvm,Dictionary,Combobox,我正在维护一个内部WPF应用程序,它有一个绑定到ViewModel中Dictionary属性的组合框。该应用程序是用VS2010 targeting.NET4.0编写的,一切正常 用户机器现在自动更新到.NET4.5&这个特定的组合框在运行时不显示UI中的值。这是应用程序中唯一绑定到字典的绑定。我在VS2013中搜索了输出窗口,但没有明显的绑定错误等。有一种方法可以填充字典&所有内容都正确填充了&我已经实现了INPC。NET4.5绑定到字典的方式有什么不同吗 Xaml: 好的,问题是由于INot
好的,问题是由于INotifyPropertyChanged的实现未使用静态属性。我编写了PropertyChanged事件的静态版本,并在属性设置程序中引发了该事件:
// INotifyPropertyChanged event for static properties!
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
private static void NotifyStaticPropertyChanged(string propertyName)
{
if (StaticPropertyChanged != null)
{
StaticPropertyChanged(null, new PropertyChangedEventArgs(propertyName));
}
}
//静态属性的INotifyPropertyChanged事件!
公共静态事件EventHandler StaticPropertyChanged;
私有静态void NotifyStaticPropertyChanged(字符串propertyName)
{
if(StaticPropertyChanged!=null)
{
StaticPropertyChanged(空,新PropertyChangedEventArgs(propertyName));
}
}
财产:
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
OnPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
NotifyStaticPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}
private Dictionary\u ModelArticleTypeCodeToTitleMapFilteredByCategory=ModelArticleTypeCodeToTitleMap;
公共字典模型ArticleTypeCodeToTitleMapFilteredByCategory
{
获取{return\u ModelArticleTypeCodeToChangeTitleMap;}
设置
{
_ModelArticleTypeCodeToChangeTitleMap=值;
NotifyStaticPropertyChanged(“ModelArticleTypeCodeToChangeTitleMap”);
}
}
ModelArticleTypeCodeToChangeTitleMap属性在哪里?是的,我已经公开了该属性,这些值在运行时分配给字典。在.NET4.0中,一切都按预期运行,因此我知道视图模型提供了要绑定到的数据。很难相信在.net 4.0和.net 4.5之间绑定的处理方式会有很大的不同,您最好尝试修改项目中所有可能的代码。对,但是,为什么在安装了.NET4.0的情况下,这会像预期的那样起作用,而在安装了.NET4.5的情况下,无论我将项目定位在哪个框架上,这都不会起作用呢?如果我编写一个虚拟的ObservableCollection,ComboBox将毫无问题地绑定。。。
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
NotifyStaticPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}