我正在努力使双向装订工作
Textblock
具有编译绑定
x:Bind
问题:
即使设置twoway绑定模式和propertyChanged源触发器。不能让它工作。当后面的代码中的对象属性平衡发生变化时,它不会在UI中得到更新。
下面是代码。
XAML
<TextBlock x:Name="Balance"
Text="{x:Bind classObject.Balance,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
代码隐藏
private ClassName classObject = new ClassName() { Name = "Foo",Balance = 100 };
public Observable ViewModel { get; } = new Observable();
private void NavLinksList_ItemClick(object sender,ItemClickEventArgs e)
{
classObject = new ClassName() { Name = "Blah",Balance = 10 * new Random().NextDouble() * (50 - 1) + 1 };
}
可观测的
public class Observable : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void Set<T>(ref T storage, T value, [CallerMemberName]string propertyName = null)
{
if (Equals(storage, value))
{
return;
}
storage = value;
OnPropertyChanged(propertyName);
}
protected void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
替代解决方案
集合
Textblock.Text
在“代码隐藏”中手动执行。
但问题是,属性更改事件应该可以工作并自动更新文本块,而不需要显式编码。
我搜索了其他问题,但找不到类似的问题。