这是我的按钮样式:
<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
内,但仍然没有运气。如何显示按钮的内容?
答案 0 :(得分:0)
您尚未定义文字应放在模板中的任何位置 - 您实际上只是告诉该按钮只是一张图片。
该按钮会添加&#39;内容&#39;在控件模板中的元素<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>