我的视图模型中有一个名为"CurrentTool
"的字符串属性。如何根据currentTool的状态绑定控件的可见性?
例如,这不起作用:
<DockPanel Visibility="{Binding (CurrentTool == brush), Converter={StaticResource BoolToVis}}"/>
我知道我可以在我的视图模型中创建一些布尔属性,比如CurrentToolIsBrush,然后绑定到它,但我想知道是否有更简单、更干净的方法。
您可以使用QuickConverter在XAML中进行内联转换(https://quickconverter.codeplex.com/)
在你的情况下,你可以使用类似的东西:
Visibility="{qc:MultiBinding '$P0==$P1 ? Visibility.Visible : Visibility.Collapsed', P0={Binding CurrentTool}, P1={Binding brush}}"
您可以在DataTrigger
的中使用自定义样式
<DockPanel.Style>
<Style TargetType="{x:Type DockPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentTool}" Value="brush">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>