Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET4.5将组合框绑定到字典问题。WPF_C#_Wpf_Mvvm_Dictionary_Combobox - Fatal编程技术网

C# .NET4.5将组合框绑定到字典问题。WPF

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

我正在维护一个内部WPF应用程序,它有一个绑定到ViewModel中Dictionary属性的组合框。该应用程序是用VS2010 targeting.NET4.0编写的,一切正常

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

Xaml:


好的,问题是由于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");
    }
}