使用x更改可见性:绑定不使用MVVM进行更新

时间:2017-02-20 09:24:15

标签: c# xaml mvvm converter visibility

自周年纪念更新(Build 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 Anniversary Edition。不幸的是我没有让它发挥作用。

这段代码很好用:

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

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

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

我怀疑Mode =&#34; TwoWay&#34;成为问题,因为你无法设置它&#34;当绑定表达式以演员&#34;结束时。此代码不起作用:

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

所以我的问题是:我是在误读某些内容还是在MVVM-Scenario中还没有工作?只有代码隐藏?

2 个答案:

答案 0 :(得分:2)

默认ModeOneTime,这会导致您的代码无效。我建议你使用OneWay,它应该在投射时使用。

答案 1 :(得分:0)

结果x:绑定默认值为Mode=OneTime - 我错误地认为它是Mode=OneWay。 所以这确实有效:

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