c# - 使用 x :Bind not updating with MVVM 更改可见性

标签 c# xaml mvvm converters visibility

自周年更新(内部版本 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"是问题所在,因为您不能将其设置为“当绑定(bind)表达式以强制转换结束时”。此代码也不起作用:

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

所以我的问题是:我是不是遗漏了什么,或者这在 MVVM 场景中还不能正常工作,而且只能使用代码隐藏?

最佳答案

默认的 ModeOne Time,这会导致您的代码无法运行。我建议您使用 One Way,它应该可以在转换时使用。

关于c# - 使用 x :Bind not updating with MVVM 更改可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42340685/

相关文章:

c# - FileStream 在 try and catch 中,关闭读取器有多重要?

c# - 不同的 .NET 程序集引用取决于 32-64 位

c# - 如何设置非事件窗口的样式?

mvvm - ContentControls 的 DataTemplate 默认可见性

c# - 将 Observable 集合写入 Csv 文件

c# - 关闭多线程应用程序

c# - 如何维护在 Web 表单上输入/选择的数据而不保存它

c# - 使用复选框在 ListBox 中加载数据

WPF 扩展器按钮样式,因此它位于扩展器标题内

.net - 使用 ViewModel 进行 UI 线程化