这是我的按钮样式:
<Style TargetType="local:Button" xmlns:local="clr-namespace:Terminal">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Button}">
<Image x:Name="img" Source="{Binding DefaultImage,RelativeSource={RelativeSource TemplatedParent}, FallbackValue=img/0.png, TargetNullValue=img/0.png}" Stretch="Fill">
</Image>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Source" TargetName="img"
Value="{Binding PressedImage,RelativeSource={RelativeSource TemplatedParent}, FallbackValue=img/1_push.png, TargetNullValue=img/1_push.png}">
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我的按钮代码如下:
<local:Button xmlns:local="clr-namespace:Terminal" x:Name="btnLine" Grid.Column="1" Content="LINE"
DefaultImage="img/line.png" PressedImage="img/line_pushed.png" Click="btnLine_Click">
</local:Button>
问题在于按钮内容未显示在图像上方。我也尝试放入运气TextBlock
,local:Button
但仍然没有运气。如何显示按钮的内容?
您尚未定义文本在模板中的任何位置,实际上只是告诉按钮只是图像。
该按钮将<ContentPresenter/>
在控件模板的元素中添加“内容” 。这是一件容易忽略的事情!所以你需要像这样的东西:
<Style TargetType="local:Button" xmlns:local="clr-namespace:Terminal">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Button}">
<Grid>
<Image x:Name="img" Source="{Binding DefaultImage,RelativeSource={RelativeSource TemplatedParent}, FallbackValue=img/0.png, TargetNullValue=img/0.png}" Stretch="Fill">
</Image>
<ContentPresenter/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Source" TargetName="img"
Value="{Binding PressedImage,RelativeSource={RelativeSource TemplatedParent}, FallbackValue=img/1_push.png, TargetNullValue=img/1_push.png}">
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句