Я пытаюсь связать статическое свойство некоторого класса с некоторым элементом управления. Я tryied несколько реализации, но каждый из них имеет свою задачу:Связывание статического свойства и реализация INotifyPropertyChanged
Все примеры используют следующий код XAML:
<Label Name="label1" Content="{Binding Path=text}"/>
первого подход - не использовать INotifyPropertyChanged
public class foo1
{
public static string text { get; set; }
}
Проблема заключается в том, что когда «текст» изменяется, элемент управления не уведомляется.
Второй подход - использовать INotifyPropertyChanged
public class foo1 : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private static string _text;
public static string text
{
get { return _text; }
set
{
_text = value;
OnPropertyChanged("text");
}
}
}
Это не компилируется, так как метод OnPropertyChanged() не является статическим, и это называется в статическом методе.
Второй подход try 2: make OnPropertyChanged() метод static => это не скомпилируется, потому что OnPropertyChanged() теперь статичен и пытается использовать событие «PropertyChanged», которое не является статичным.
Второй подход try 3: make 'PropertyChanged' event static => это не скомпилируется, потому что класс не реализует событие INotifyPropertyChanged.PropertyChanged (событие определено в интерфейсе INotifyPropertyChanged не является статическим, но здесь оно статика).
На данный момент я сдался.
Любые идеи?
большие пальцы вверх Я реализовал немного разные, см. Ниже –