0

我正在尝试根据以下文章在 WPF 中制作图像按钮

WPF中的自定义按钮模板

问题是我不知道如何在禁用按钮时使图像变为灰度。所以我正在加载两个图像,但我无法将第二个图像加载到 ButtonProperties。所以我的想法是加载一个 rgb 和灰度图像,当我禁用按钮时,一个图像被隐藏,另一个图像被显示,反之亦然。以及变灰的文本。我认为,这可以通过触发器很好地完成。

这是我的代码:

a) 风格

<Setter Property="ContentTemplate">
  <Setter.Value>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <Image Width="20"
               Name="imgEnabled"
               Source="{Binding Path=(ib:ButtonProperties.Image), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"></Image>
        <Image Width="20"
               Name="imgDisabled"
               Source="{Binding Path=(ib:ButtonProperties.Image), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"></Image>
        <ContentPresenter Content="{Binding Path=Content, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"></ContentPresenter>
      </StackPanel>
    </DataTemplate>
  </Setter.Value>
</Setter>  

b) 代码:

public class ButtonProperties:DependencyObject
{

    public static readonly DependencyProperty ImageProperty =
        DependencyProperty.Register("Image", 
                                    typeof(ImageSource), 
                                    typeof(ButtonProperties), 
                                    new UIPropertyMetadata((ImageSource)null));



    public static ImageSource GetImage(DependencyObject obj)
    {
        return (ImageSource)obj.GetValue(ImageProperty);
    }

    public static void SetImage(DependencyObject obj, ImageSource value)
    {
        obj.SetValue(ImageProperty, value);
    }
}

3)控制:

<ItemsControl Name="icImageButtons"
              ItemsSource="{Binding}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Button ToolTip="{Binding Tip}"
              ib:ButtonProperties.Image="{Binding EnabledSource}"
              Content="{Binding Text}"
              Style="{StaticResource ImageButton}" />
    </DataTemplate>

  </ItemsControl.ItemTemplate>
</ItemsControl>

任何建议或想法。我只是想在禁用 ImageButton 时获得效果,图像和文本一样变灰。

建议?

4

0 回答 0