gpt4 book ai didi

c# - .NET4.5 将组合框绑定(bind)到字典问题。 WPF

转载 作者:行者123 更新时间:2023-12-03 10:45:53 24 4
gpt4 key购买 nike

我正在维护一个内部 WPF 应用程序,它有一个 ComboBox 绑定(bind)到 ViewModel 中的 Dictionary 属性。该应用程序是用面向 .NET4.0 的 VS2010 编写的,一切正常。

用户机器现在自动更新到 .NET4.5 并且这个特定的 ComboBox 在运行时不会在 UI 中显示值。这是应用程序中唯一绑定(bind)到字典的方法。我已经在 VS2013 中搜索了输出窗口,但没有明显的绑定(bind)错误等。有一种方法可以填充字典,并且所有内容都正确填充,并且我已经实现了 INPC。 .NET4.5 绑定(bind)到字典的方式有什么不同吗?

xml:

  <ComboBox ItemsSource="{Binding Path=ModelArticleTypeCodeToChangeTitleMap, 
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Converter={StaticResource invertBoolConverter}}"
IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Value"
SelectedValuePath="Key"
SelectedValue="{Binding ModelSelectedArticleTypeCode}"
Text="{Binding ModelEnteredTitle}" />

View 模型属性:
    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));
}
}

属性(property):
private Dictionary<string, string> _ModelArticleTypeCodeToTitleMapFilteredByCategory = ModelArticleTypeCodeToTitleMap;
public Dictionary<string, string> ModelArticleTypeCodeToTitleMapFilteredByCategory
{
get { return _ModelArticleTypeCodeToChangeTitleMap; }
set
{
_ModelArticleTypeCodeToChangeTitleMap = value;
NotifyStaticPropertyChanged("ModelArticleTypeCodeToChangeTitleMap");
}
}

关于c# - .NET4.5 将组合框绑定(bind)到字典问题。 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26401574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com