用于启用和禁用WPF中按钮状态的不同图像

时间:2009-10-07 14:48:25

标签: c# wpf image button

我想根据状态更改下面代码中的按钮图像,即使用不同的图像启用和禁用状态。

<Button CommandParameter="Open" >
    <StackPanel Orientation="Horizontal" >
        <Image Source="../icons/big/open.png" Width="20" Height="20"></Image>
    </StackPanel>
</Button>

谢谢。

4 个答案:

答案 0 :(得分:10)

你可以使用带有这样的触发器的样式:

<Style TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <StackPanel Orientation="Horizontal" >
                    <Image Name="PART_Image" Source="path to normal image" />
                </StackPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Source" Value="path to mouse over image" TargetName="PART_Image"/>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Source" Value="path to pressed image" TargetName="PART_Image"/>
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Source" Value="path to disabled image" TargetName="PART_Image"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

答案 1 :(得分:9)

我使用以下代码使按钮内的图像在禁用按钮时具有一半的不透明度并且效果很好!

<Style TargetType="Button">
    <Style.Resources>
        <Style TargetType="Image">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Opacity" Value="0.5" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Style.Resources>
</Style>

答案 2 :(得分:0)

尝试使用Style.Triggers,请参阅帖子wpf-style-trigger

答案 3 :(得分:0)

基本上,为按钮创建一个样式,使其在其content属性中显示一个图像对象,然后有一个触发器,用于检查按钮启用状态,当它为TRUE时,它是一个图像,而在所有其他图像时代是另一个形象。