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