使用 x:Bind 更改可见性而不使用 MVVM 更新

Changing Visibility with x:Bind not updating with MVVM

自周年更新(内部版本 14383 / 14393)以来,您应该能够 toggle the visibility of XAML elements 无需使用转换器,如下所示:

<TextBlock Text="I'm not visible!" Visibility="{x:Bind IsVisibleFalse}" />
<TextBlock Text="I'm visible!" Visibility="{x:Bind IsVisibleTrue}" />

我在我的项目中尝试过,最低目标版本设置为 Windows 10 周年纪念版。不幸的是我没有让它工作。

此代码工作正常:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, 
    Converter={StaticResource BoolToVisibilityConverter}, Mode=TwoWay}">

这个没有(编译时没有错误,只是在 bool 值更改时不显示):

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked}>

我怀疑 Mode="TwoWay" 是问题所在,因为您无法设置它 "when the binding expression ends with a cast"。此代码也不起作用:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked,
   Converter={StaticResource BoolToVisibilityConverter}>

所以我的问题是:我是不是遗漏了什么,或者这在 MVVM 场景中还没有工作并且只有代码隐藏?

原来 x:Bind 默认为 Mode=OneTime - 我误以为是 Mode=OneWay。 所以这确实有效:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, Mode=OneWay}>

默认 ModeOneTime,这会导致您的代码无法运行。我建议你使用 OneWay,它应该可以在铸造时使用。