我有以下为按钮定义的Page.Resource:
<Page.Resources>
<Style x:Key="MyButton" TargetType="Button">
<Setter Property="Margin" Value="2"/>
<Setter Property="FontFamily" Value="Verdana"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="#FF2D36E6"/>
</Grid.Background>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
这是我定义按钮并将资源应用于它的地方,但是当我运行应用程序时,我只是看不到按钮的内容,我已将其设置为“NEXT”。
<Grid>
...
...
<Button Name="btnNext" Style="{StaticResource ResourceKey=MyButton}" Grid.Row="0" Click="btnNext_Click" Content="NEXT" VerticalAlignment="Bottom" Padding="20" Width="650" Grid.Column="2" HorizontalAlignment="Right" Height="600" FontSize="48" BorderThickness="0" FontWeight="ExtraBlack" />
...
...
</Grid>
我该如何解决这个问题?
答案 0 :(得分:2)
如果您所做的只是设置背景,则无需在按钮内重新定义模板。
将您的风格更新为:
<Style x:Key="MyButton" TargetType="Button">
<Setter Property="Margin" Value="2"/>
<Setter Property="FontFamily" Value="Verdana"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="#FF2D36E6" />
</Style>
..然后按原样使用它(具有明确在Button属性中设置的内容。
此外,如果您想使用已定义的样式,则需要在ContentPresenter
内提供Template
:
<Style x:Key="MyButton" TargetType="Button">
<Setter Property="Margin" Value="2"/>
<Setter Property="FontFamily" Value="Verdana"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="#FF2D36E6"/>
</Grid.Background>
<ContentPresenter x:Name="contentPresenter"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>