我有一个像这样定义的WPF按钮:
<Button Style="{StaticResource RevertButtonStyle}" />
这是样式的样子:
<Style x:Key="RevertButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Height" Value="25" />
<Setter Property="Width" Value="20" />
<Setter Property="Margin" Value="3,0,0,0" />
</Style>
如何更改样式以指定内容以使用名为“revert.png”的图像?
谢谢,
答案 0 :(得分:37)
您不能将Content属性设置为Image
控件的实例,因为Image可以由多个Button使用。这将导致“视觉已经是另一个视觉的孩子”例外。
相反,您可以像这样使用DataTemplate:
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="revert.png" />
</DataTemplate>
</Setter.Value>
</Setter>
显然,您可能需要调整图片的源URI。
答案 1 :(得分:3)
在我的应用程序中,我定义了一个ImageButton
控件,用于指定ImageSource
属性。
这样的风格如下:
<Style TargetType="{x:Type controls:ImageButton}">
<Setter Property="ForceCursor" Value="True" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="ToolTip" Value="{Binding Path=Caption, RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:ImageButton}">
<Image Width="16" Height="16" Source="{Binding Path=ImageSource, RelativeSource={RelativeSource Mode=TemplatedParent}}" Name="image" />
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="image" Property="Opacity" Value="0.3" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
但在您的情况下,如果您想对具有特定Button
集的所有Style
个对象使用相同的图片,则只需在<Image Source="pack://application:,,,/My.Assembly.Name;component/Icons/revert.png" />
中使用Template
即可如果您要使用的图像已作为资源包含在应用程序中。