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

Tho*_*mas 2 c# xaml visibility converter mvvm

自周年纪念更新(内部版本 14383 / 14393)以来,您应该能够在不使用转换器的情况下切换 XAML 元素的可见性,如下所示:

<TextBlock Text="I'm not visible!" Visibility="{x:Bind IsVisibleFalse}" />
<TextBlock Text="I'm visible!" Visibility="{x:Bind IsVisibleTrue}" />
Run Code Online (Sandbox Code Playgroud)

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

这段代码工作得很好:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked, 
    Converter={StaticResource BoolToVisibilityConverter}, Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)

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

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked}>
Run Code Online (Sandbox Code Playgroud)

我怀疑 Mode="TwoWay" 是问题所在,因为您无法在“绑定表达式以强制转换结束时”设置它。此代码也不起作用:

<StackPanel Visibility="{x:Bind ViewModel.IsUnlocked,
   Converter={StaticResource BoolToVisibilityConverter}>
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*ode 5

默认ModeOneTime,这会使您的代码不起作用。我建议你使用OneWay,它应该在铸造时可用。