我有一个应用程序将所有全局变量分组到一个类中。它们用于应用程序中的许多类。(300 多个变量,为演示而缩短):
public class Vars
{
public static string DateStr = "";
}
我想使用 x:Bind to One-way 将数据绑定到页面上的字段:
<TextBlock x:Name="Local_Data" Text="{x:Bind local:Vars.DateStr, Mode=OneWay}" Style="{StaticResource TextBlockStyle1}"/>
OneTime 绑定似乎工作正常。我可以刷新页面,并且 DateStr 反映了新值。
我将 Vars 类定义更改为:
public class Vars : INotifyPropertyChanged
{
private static string _DateStr = "hello";
public static string DateStr
{
get { return _DateStr; }
set
{
_DateStr = value;
OnPropertyChanged();
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raises this object's PropertyChanged event.
/// </summary>
/// <param name="propertyName">The property that has a new value.</param>
protected void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
#endregion
}
当我尝试构建时,我收到消息:
非静态字段、方法或属性“Vars.OnPropertyChanged(string)”需要对象引用
如果我将其更改为:
protected static void OnPropertyChanged([CallerMemberName]string propertyName = null)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
我收到消息:
关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效
我认为我错过了一些微不足道的事情。标记数据更改的正确方法是什么?
谢谢你的帮助。担