如何通过xaml和C#在鼠标点击时更改字体样式?

时间:2012-06-14 05:24:12

标签: wpf

我有五个这样的按钮:

            <Button Name="btnAssets" Grid.Row="1" Margin="7,1,7,1" Click="btnDrawer_Click" >
                <StackPanel >
                    <StackPanel.Background>
                        <ImageBrush ImageSource="/Test;component/Images/DrawerSlid.png" />
                    </StackPanel.Background>
                    <Image Margin="0,0,0,0" Source="/Test;component/Images/DrawerUpper2.png" />
                    <TextBlock Margin="0,10,0,10" TextWrapping="WrapWithOverflow" TextAlignment="Center">Assets</TextBlock>
                    <Image Margin="0,0,0,0" Source="/Test;component/Images/DrawerSlid2.png" />
                </StackPanel>                    
            </Button>

这些按钮的样式触发器如下:

    <Style TargetType="StackPanel">
        <Setter Property= "TextBlock.Foreground" Value="White"/>
        <Setter Property= "TextBlock.FontSize" Value="12"/>
        <Style.Triggers>
           <Trigger Property ="IsMouseOver" Value="True">
               <Setter Property= "TextBlock.Foreground" Value="Yellow"/>
               <Setter Property= "TextBlock.FontSize" Value="13"/>
            </Trigger>
        </Style.Triggers>                       
    </Style>

这些代码工作正常。现在我希望当用户点击任何Button时,应该更改其前景颜色和字体大小。但我找不到任何简单的解决方案。怎么做才能通过xaml或通过c#?

2 个答案:

答案 0 :(得分:1)

您可以在按钮样式模板中使用触发器“IsPressed”。 见http://geekswithblogs.net/cskardon/archive/2008/06/20/roundedbutton-button-style-wpf.aspx

答案 1 :(得分:0)

按钮在WPF中具有不同的构造方式,因此有一些工作涉及使按钮的触发器按您的意愿工作。步骤通常是:

  1. 从Decorator基类派生,为您自己的按钮创建模板
  2. 为XAML中的按钮创建自己的控件模板
  3. 将按钮连接到自定义模板!
  4. 这里给出了一篇精美的工作文章和例子: http://www.wiredprairie.us/journal/2006/09/wpf_decorators_build_your_own.html