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

时间:2010-10-15 18:28:39

标签: wpf binding

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

3 个答案:

答案 0 :(得分:34)

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

        <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>

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

答案 1 :(得分:18)

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

Command={Binding MyCommand}
Visibility="{Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Converter={StaticResource BTVC}}"

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

答案 2 :(得分:1)

使用BooleanToVisibilityConverter并绑定到布尔值described here