我有一种风格
<Style x:Key="HomeButtonStyle" TargetType="Button">
<Setter Property="Height" Value="32"/>
<Setter Property="Width" Value="32"></Setter>
<Setter Property="Content">
<Setter.Value>
<Image Source="/Images/HOME.png"></Image>
</Setter.Value>
</Setter>
</Style>
我在控件中有一些xaml
<StackPanel Grid.Row="0" Orientation="Horizontal">
<Button Style="{DynamicResource HomeButtonStyle}" />
<Button Style="{DynamicResource HomeButtonStyle}" />
<Button Style="{DynamicResource HomeButtonStyle}" />
<Button Style="{DynamicResource HomeButtonStyle}" />
</StackPanel>
然而,图像仅显示在最后一个按钮中。
我的问题是为什么?以及如何在所有按钮中显示图像?
答案 0 :(得分:6)
在您的风格中,您应该直接设置ContentTemplate
而不是Content
。
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="/Images/HOME.png"></Image>
</DataTemplate>
</Setter.Value>
</Setter>
答案 1 :(得分:3)
<Image x:Key="HomeImage" x:Shared="false" Source="/Images/Home.jpg" />
<Style x:Key="HomeButtonStyle" TargetType="Button">
<Setter Property="Height" Value="32"/>
<Setter Property="Width" Value="32"></Setter>
<Setter Property="Content" Value="{StaticResource HomeImage}" />
</Style>
您的代码正在重复使用已添加到另一个可视树中的图像控件。使用x:shared每次都创建一个新的Image控件实例,一切都会好的。更多信息here。