C# 如何实现INPC以引用静态属性?

C# 如何实现INPC以引用静态属性?,c#,wpf,mvvm,C#,Wpf,Mvvm,有一个静态配置类: public class Cfg : PropertyChangedBase { private static string _niceString; public static string NiceString { get => _niceString; set { _niceString = value; NotifyStaticPropertyChanged("Ni

有一个静态配置类:

public class Cfg : PropertyChangedBase
{
    private static string _niceString;

    public static string NiceString {
        get => _niceString;
        set {
            _niceString = value;
            NotifyStaticPropertyChanged("NiceString");
        }
    }

    public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
    private static void NotifyStaticPropertyChanged(string propertyName) {
        StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyName));
    }
}
所以(类使用KindOfMagic实现INPC,这很有效)并像这样实现绑定:`Content=“{binding MyBestString}”,那么什么都不起作用

为什么??如何让它工作



另外,不可能使用这样的绑定
Content=“{binding Path=(local:Сfg.Nice)}”
-我需要在将值显示在元素中之前处理它们。

没有理由原始属性也不能为
MyBestString
提供通知更改事件

将代码更改为:

   public static string NiceString {
        get => _niceString;
        set {
            _niceString = value;
            NotifyStaticPropertyChanged("NiceString");
            NotifyStaticPropertyChanged("MyBestString");
        }
    }

每当
MyBestString
的值更改时,VM必须引发PropertyChanged。绑定无法猜测它应该在某个地方找到这个静态对象;它只知道你给了它什么。因此,让您的viewmodel向
Cfg.PropertyChanged
添加一个处理程序,并让处理程序调用
OnPropertyChanged(nameof(MyBestString))
每当
Cfg
Nice
发出更改通知时,“我需要在将值显示在元素中之前对其进行处理。”--听起来像是一个值转换器。自己写答案?以转换器为代价-我不喜欢在每一步都编写它们,对我来说更改
get
   public static string NiceString {
        get => _niceString;
        set {
            _niceString = value;
            NotifyStaticPropertyChanged("NiceString");
            NotifyStaticPropertyChanged("MyBestString");
        }
    }