我有这个 win ui 主窗口,它分配一个视图模型并绑定到一个属性。文本最初从视图模型正确显示,但是当视图模型更新文本时,控件不会更新。我发现视图模型中 propertychanged 事件的事件处理程序始终为 null,因为 ui 没有订阅它。我在这里缺少什么?
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
this.ViewModel = new AdventureViewModel();
}
public AdventureViewModel ViewModel { get; }
}
<Window
x:Class="Adventure.WinUi.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Adventure.WinUi"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel>
<TextBlock Text="{x:Bind ViewModel.Text}" />
</StackPanel>
</Window>
ok我找到答案了,winui默认的绑定模式是OneTime,所以要可更新的时候我必须将其设置为OneWay:
<TextBlock Text="{x:Bind ViewModel.Text, Mode=OneWay}" />