使用图像作为WPF按钮图标掩码?

Dav*_*veO 8 wpf icons

我想知道是否可以执行以下操作:

  • 创造一个黑白图像,比如狗
  • 将图像添加到按钮作为蒙版
  • 使用(数据)触发器更改样式,例如禁用 - 狗是灰色的,"加载" - 狗是红色的,"准备好"狗是黄色等等.

基本上我想使用像素创建按钮图标,但能够根据触发器在运行时设置颜色.像这样的东西:

狗按钮

Dav*_*veO 11

经过2个小时的谷歌搜索,这里是答案

<Window x:Class="IconTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <!-- button style -->
        <Style x:Key="ToolButton" TargetType="Button">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border Width="16" Height="16" Background="#ffbbbbbb">
                            <Rectangle Name="rect" Fill="Black" OpacityMask="{TemplateBinding Content}"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="rect" Property="Fill" Value="Green" />
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="rect" Property="Fill" Value="Yellow" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    </Window.Resources>
    <Grid>
        <Button Width="16" Height="16" Style="{StaticResource ToolButton}">
            <ImageBrush ImageSource="/test.png"/>
        </Button>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)