.NET4.5将组合框绑定到字典问题。 WPF
问题描述:
我正在维护一个内部WPF应用程序,它具有绑定到ViewModel中的Dictionary属性的ComboBox。该应用程序是在VS2010中编写的,面向.NET4.0,一切正常。.NET4.5将组合框绑定到字典问题。 WPF
用户机器现在自动更新到.NET4.5 &此特定ComboBox在运行时不显示UI中的值。这是应用程序中对Dictionary的唯一绑定。我在VS2013中搜索了输出窗口,但没有明显的绑定错误等。有一种方法填充字典&所有填充正确&我已经实现了INPC。 .NET4.5绑定到字典的方式有什么不同吗?
的XAML:
<ComboBox ItemsSource="{Binding Path=ModelArticleTypeCodeToChangeTitleMap,
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Converter={StaticResource invertBoolConverter}}"
IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Value"
SelectedValuePath="Key"
SelectedValue="{Binding ModelSelectedArticleTypeCode}"
Text="{Binding ModelEnteredTitle}" />
视图模型属性:
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
OnPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}
答
好吧,这个问题是由于INotifyPropertyChanged的不是一个静态属性工作的落实。我写的PropertyChanged事件的静态版本,并提出在属性setter事件:
// 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));
}
}
物业:
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
NotifyStaticPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}
哪里'ModelArticleTypeCodeToChangeTitleMap'财产? – 2014-10-16 10:07:14
是的,我有该属性暴露,值在运行时分配给字典。一切都按预期在.NET4.0中运行,所以我知道视图模型提供了要绑定的数据。 – Hardgraf 2014-10-16 10:09:34
很难相信绑定可以在.net 4.0和.net 4.5之间有很大的不同,你应该更好地尝试修改项目中所有可能的代码。 – 2014-10-16 10:22:08