如何隐藏绑定到无法执行的命令的按钮?

ako*_*nsu 28 wpf binding

我没有禁用自动发生的按钮,而是隐藏(或者更确切地说是折叠了按钮的可见性).

Won*_*ane 36

您可以使用样式和触发器,假设该命令负责设置启用/禁用按钮:

        <Button x:Name="btnMoveUp"
                Command="{x:Static local:Window1.MoveItemUp}">
            <Button.Style>
                <Style TargetType="{x:Type Button}" >
                    <Style.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Visibility" Value="Collapsed" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
Run Code Online (Sandbox Code Playgroud)

请注意,您可以在更高的范围内定义此样式并共享它 - 我只是将其与Button一起用于更加压缩的示例.


Dan*_*zen 20

如果Visibility属性尚未绑定,则没有样式和触发器的相同行为.

Command={Binding MyCommand}
Visibility="{Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Converter={StaticResource BTVC}}"
Run Code Online (Sandbox Code Playgroud)

其中BTVC是BooleanToVisibilityConverter(必须具备).