数据绑定到单源只能在Windows Phone模拟器上工作,但不能在设备上工作
本文关键字:工作 但不能 模拟器 Phone 单源 Windows 数据绑定 | 更新日期: 2023-09-27 18:06:17
我创建了一个单例类来存储我想在我正在开发的Windows Phone 7应用程序的控件之间全局共享的信息。
具体来说,我使用数据绑定来同步各种Silverlight Toolkit ExpanderViews之间的IsExpanded
属性。我遇到的问题是,值似乎不传播,但只有在一个物理 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));
}
}
我用以下代码绑定ExpanderViews的IsExpanded
属性:
Binding _isExpandedBinding = new Binding
{
Source = ControlStateContainer.Instance,
Path = new PropertyPath("OptionsExpanded"),
Mode = BindingMode.TwoWay
};
expander.SetBinding(ExpanderView.IsExpandedProperty, _isExpandedBinding);
ExpanderViews在模拟器上的行为与预期一样,但是当我将应用程序部署到设备时,绑定似乎不再工作。
对于c#和Windows Phone开发,我还是一个新手,我完全希望这是我错过的一个令人尴尬的简单细节。什么好主意吗?
显然,单例类必须显式声明public
…现在它可以在模拟器和设备上工作。