0

我创建了一个单例类来存储我想要在我正在开发的 Windows Phone 7 应用程序中的控件之间全局共享的信息。

具体来说,我使用数据绑定来同步IsExpanded各种 Silverlight Toolkit ExpanderViews 之间的属性。我遇到的问题是该值似乎没有传播,但仅在物理Windows Phone 设备上......该应用程序在模拟器上运行良好。

由于该项目中除单例类之外的所有其他源绑定都工作正常,我假设我错误地实现了绑定和/或单例,或者遗漏了一些明显的东西......但是这个论坛上的每个线程和其他我'已经检查并没有帮助我解决这个问题。

单例类如下:

class ControlStateContainer : INotifyPropertyChanged
{
    private static readonly ControlStateContainer _instance = new ControlStateContainer();
    private bool _optionsExpanded = false;

    private ControlStateContainer()
    { }

    public static ControlStateContainer Instance
    {
        get { return _instance; }
    }

    public bool OptionsExpanded
    {
        get { return _optionsExpanded; }
        set
        {
            _optionsExpanded = value;
            this.NotifyPropertyChanged("OptionsExpanded");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string name)
    {
        var handler = PropertyChanged;

        if (handler != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
}

我正在IsExpanded使用以下代码绑定 ExpanderViews 的属性:

Binding _isExpandedBinding = new Binding
{
    Source = ControlStateContainer.Instance,
    Path = new PropertyPath("OptionsExpanded"),
    Mode = BindingMode.TwoWay
};

expander.SetBinding(ExpanderView.IsExpandedProperty, _isExpandedBinding);

ExpanderViews 在模拟器上的行为与预期一样,但是当我将应用程序部署到设备时,绑定似乎不再起作用。

总的来说,我对 C# 和 Windows Phone 开发仍然很陌生,并且完全希望这是我错过的一个令人毛骨悚然的简单细节......有什么想法吗?

4

1 回答 1

1

显然必须明确声明单例类public......现在它可以在模拟器和设备上运行。

于 2013-03-28T11:42:08.980 回答