Я пытаюсь привязать статическое свойство некоторого класса к некоторому элементу управления. Я попробовал несколько реализаций, но у каждого есть свои проблемы:
Все примеры используют следующий XAML:
<Label Name="label1" Content="{Binding Path=text}"/>
1-й подход - не использовать INotifyPropertyChanged
public class foo1
{
public static string text { get; set; }
}
Проблема в том, что при изменении свойства 'text' элемент управления не уведомляется.
Второй подход - использовать 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 () не является статическим и вызывается внутри статического метода.
Второй подход, попытка 2: сделать метод OnPropertyChanged () статическим => это не компилируется, потому что OnPropertyChanged () теперь статический и пытается использовать событие PropertyChanged, которое не является статическим.
Второй подход, попытка 3: сделать событие 'PropertyChanged' статическим => это не компилируется, потому что класс не реализует событие 'INotifyPropertyChanged.PropertyChanged' (событие определено в интерфейсе INotifyPropertyChanged не статично, но здесь оно статично ).
В этот момент я сдался.
Есть идеи?