如何使用XAML中的可视状态管理器设置按钮内容颜色?

时间:2014-04-11 19:02:05

标签: c# xaml

我有以下为按钮定义的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>

我该如何解决这个问题?

1 个答案:

答案 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>