2

我从来没有遇到过这个问题,但最近我注意到如果属性驻留在 Singleton 中,则两种方式绑定到属性不起作用。

我的意思是“其他”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}" />
4

2 回答 2

0

这让我有点困惑,但这是一个简单的解决方法。使用单例没有问题。

改变

this.PropertyChanged(null, new PropertyChangedEventArgs(info));

this.PropertyChanged(this, new PropertyChangedEventArgs(info));
于 2012-06-19T20:25:05.800 回答
0

我查看了您的代码并将其实现到我自己的项目中,但不幸的是它没有按预期工作。PropertyChangedEventHandler 始终为 null,并且从未在任何地方设置。

你有你的代码的副本,这样我就可以看一下它,看看我哪里出错了?

于 2012-07-02T15:04:57.743 回答