Привязка двух элементов UIElements к одному свойству не работает должным образом, если свойство находится в одноэлементном экземпляре
Я никогда не сталкивался с этой проблемой, но совсем недавно я заметил, что двусторонняя привязка к свойству не работает, если свойство находится в синглтоне.
Я имею в виду, что "другой"
CheckBox никогда не обновляет свое значение.Любые идеи о том, как заставить его работать?
Заранее спасибо!
Синглтон.cs
public class Singleton : INotifyPropertyChanged
{
private bool panelClosed;
static Singleton()
{
Instance = new Singleton();
}
public event PropertyChangedEventHandler PropertyChanged;
public static Singleton Instance { get; private set; }
public bool PanelClosed
{
get
{
return this.panelClosed;
}
set
{
this.panelClosed = value;
this.NotifyPropertyChanged("PanelClosed");
}
}
private void NotifyPropertyChanged(string info)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(null, new PropertyChangedEventArgs(info));
}
}
}
XAML:
<CheckBox
Content="Check/Uncheck me"
Height="16" Name="checkBox1"
IsChecked="{Binding Source={x:Static local:Singleton.Instance}, Path=PanelClosed,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<CheckBox
Content="Sanity Check"
Height="16" Name="checkBox2"
IsChecked="{Binding Source={x:Static local:Singleton.Instance}, Path=PanelClosed,
UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
2 ответов:
Это немного смутило меня, но это простое решение. Нет никаких проблем с использованием синглтона.
Изменение
this.PropertyChanged(null, new PropertyChangedEventArgs(info));To
this.PropertyChanged(this, new PropertyChangedEventArgs(info));
Я просмотрел ваш код и внедрил его в свой собственный проект, но, к сожалению, он не работает так, как планировалось. В PropertyChangedEventHandler всегда имеет значение null, и не когда-нибудь установить в любом месте.
У вас есть копия вашего кода, чтобы я мог взглянуть на него и увидеть, где я ошибаюсь?
Comments