我从未遇到过这个问题,但最近我注意到,如果属性位于Singleton中,则对属性的双向绑定不起作用。
我的意思是'其他'CheckBox
永远不会更新其值。
有关如何使其发挥作用的任何想法? 提前谢谢!
Singleton.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}" />
答案 0 :(得分:0)
这让我感到困惑,但这是一个简单的修复。使用单身人士没有问题。
更改
this.PropertyChanged(null, new PropertyChangedEventArgs(info));
到
this.PropertyChanged(this, new PropertyChangedEventArgs(info));
答案 1 :(得分:0)
我已经查看了您的代码并将其实现到我自己的项目中,但不幸的是它没有按预期工作。 PropertyChangedEventHandler始终为null,并且不会在任何地方设置。
您是否拥有代码的副本,以便我可以查看它并查看我出错的地方?