Как реализовать INPC для ссылки на статическое свойство? - PullRequest
0 голосов
/ 28 июня 2019

Существует класс статической конфигурации:

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));
    }
}

Если мы сделаем привязку следующим образом: Content="{Binding Path=(local:Сfg.Nice)}" Все будет работать.

Однако, если я сделаю следующее свойство вVM:

 public string MyBestString => Cfg.NiceString;

Итак (класс реализует INPC с использованием KindOfMagic, который работает) и реализует привязку следующим образом: `Content =" {Binding MyBestString} ", тогда ничего не будет работать.

Почему?И как заставить это работать?


PS Просто невозможно использовать такую ​​привязку Content =" {Binding Path = (local: Сfg.Nice)} " - мне нужно обработать значения перед их отображением в элементе.

1 Ответ

1 голос
/ 28 июня 2019

Нет причины, по которой исходное свойство не может обслуживать событие изменения уведомления для MyBestString.

Измените свой код на такой:

   public static string NiceString {
        get => _niceString;
        set {
            _niceString = value;
            NotifyStaticPropertyChanged("NiceString");
            NotifyStaticPropertyChanged("MyBestString");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...