ICommand - canexecute无法禁用带有图像内容的Button

Rel*_*ity 2 wpf mvvm icommand canexecute

我的wpf-mvvm应用程序中有一个按钮控件.

我使用ICommand属性(在viewmodel中定义)将按钮单击事件绑定到viewmodel.

我有 - >我的ICommand实现的执行和canexecute参数(RelayCommand).

即使CanExecute为false ...按钮未被禁用... WHEN按钮CONTENT为IMAGE

但是,当按钮内容是text..enable/disable工作正常.

<Button DockPanel.Dock="Top" 
                        Command="{Binding Path=MoveUpCommand}">
                    <Button.Content>
                        <Image Source="/Resources/MoveUpArrow.png"></Image>
                    </Button.Content>
                    <Style>
                        <Style.Triggers>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Opacity" Value=".5" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Button>
Run Code Online (Sandbox Code Playgroud)

Muh*_*han 15

按钮确实被禁用,只是它不会影响图像的渲染.您必须在样式中编写一个触发器,将图像的不透明度更改为.5,您将获得所需的按钮禁用效果,如下所示:

<Style x:Key="imageButton" TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value=".5" />
            </Trigger>
        </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

  • 很高兴向我们这些不太擅长WPF的人展示如何插入按钮. (3认同)