我创建了一个单例类来存储我想要在我正在开发的 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 开发仍然很陌生,并且完全希望这是我错过的一个令人毛骨悚然的简单细节......有什么想法吗?