控件的绑定可见性取决于视图模型中字符串属性的状态

本文关键字:字符串 状态 模型 属性 视图 绑定 可见性 取决于 控件 | 更新日期: 2023-09-27 18:20:40

我的视图模型中有一个名为"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>