c# - UWP 使用 x:Bind 监控全局变量
问题描述
我有一个应用程序将所有全局变量分组到一个类中。它们用于应用程序中的许多类。(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”在静态属性、静态方法或静态字段初始值设定项中无效
我认为我错过了一些微不足道的事情。标记数据更改的正确方法是什么?
谢谢你的帮助。担
解决方案
正如提到的错误消息,您的问题的原因是您正在使用Static
修饰符作为绑定源属性 - Vars.DateStr
。您只需要删除该属性的Static
修饰符。Vars.DateStr
public string DateStr
{
get { return _DateStr; }
set
{
_DateStr = value;
OnPropertyChanged("DateStr");
}
}
推荐阅读
- javascript - 不知道React中事件处理过程中两者的区别
- google-chrome - 有没有办法以编程方式批量订阅特定列表中的所有 subreddits(没有内置方法可以做到这一点)
- jquery - Java 动态 Web 项目 Spring MVC 无法从 .js 文件中实现功能
- python - 来自 CSV 的 Python 绘图数据
- c++ - 返回值有什么意义?
- cmake - 无法在子目录中的另一个 .cmake 文件中包含 .cmake 文件
- ios - 将应用程序从 SQLite.swift 转换为 GRDB.swift
- node.js - Nest.js | @Exclude() 装饰器在 POST 方法中不起作用
- java - 突然无法通过 VSCode 启动配置运行 Java
- python - 我的程序没有产生输出,这是为什么呢?