我正在尝试实现一种按钮样式,该样式同时包含使用样式时指定的图像和标题。
这是我的风格:
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Margin="0,0,0,0" Background="#FF9E9FA3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{TemplateBinding Tag}" Grid.Column="0"/>
<Label Content="{TemplateBinding Content}" Grid.Column="1" FontSize="15" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我正在使用它:
<Button Tag="edit.png" Content="Edit" Style="{StaticResource ButtonStyle}" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button Tag="save.png" Content="Save" Style="{StaticResource ButtonStyle}" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
内容按预期工作,两个按钮显示标签中的正确单词,但图像不显示。如果我直接使用ControlTemplate(无样式)并将{TemplateBinding}替换为图像文件名,则会出现图像。
显然我使用的是Tag错误或Image错误。
帮助?
答案 0 :(得分:4)
如果你替换
,它会起作用<Image Source="{TemplateBinding Tag}" />
通过
<Image Source="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"/>
因为然后自动执行从字符串到ImageSource的必要类型转换。