首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF控件的样式

WPF控件的样式
EN

Stack Overflow用户
提问于 2014-06-21 06:43:01
回答 2查看 104关注 0票数 1

我有一个WPF Win表单应用程序。我想将样式应用于WPF中的所有控件。例如,我的当前按钮看起来像

代码语言:javascript
复制
<Button  Content="Add" Width="147" Height="31" Margin="490,10,10,10" />

我想设置按钮的样式,如下所示(带有弯曲的边框)

如何才能对所有控件执行类似的样式。

EN

回答 2

Stack Overflow用户

发布于 2014-06-21 10:52:11

首先,让我们澄清一下您的需求。我的合格猜测是,您正在寻找WPF按钮圆角的样式解决方案,如我的计算器应用程序中所示:http://webinfocentral.com/VOLTA/Manual.aspx如果是这样,那么至少有2个解决方案如下所示:

创建ResourceDictionary文件并在WPF XAML中引用它

添加按钮样式,如下面的代码片段所示,该样式创建圆角(请注意属性<Border.CornerRadius>2</Border.CornerRadius>)和3种特定于正常外观、鼠标悬停和按下按钮状态的视觉/渐变效果:

代码语言:javascript
复制
<Style TargetType="Button" x:Key="Button_Default">
    <Setter Property="Foreground" Value="#202020"/>
<Setter Property="FontSize" Value="12" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border x:Name="ButtonBackground" BorderBrush="#606060">
                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                    <Border.BorderThickness>0</Border.BorderThickness>
                    <Border.CornerRadius>2</Border.CornerRadius>
                    <Border.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="#f5f5f5" Offset="0" />
                            <GradientStop Color="#c5c5c5" Offset="0.93" />
                            <GradientStop Color="#606060" Offset="0.93" />
                            <GradientStop Color="#404040" Offset="1" />
                        </LinearGradientBrush>
                    </Border.Background>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="FontWeight" Value="Bold" />
                        <Setter TargetName="ButtonBackground" Property="Background">
                            <Setter.Value>
                                <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
                                    <GradientStop Color="#f5f5f5" Offset="0" />
                                    <GradientStop Color="#c5c5c5" Offset="0.81" />
                                    <GradientStop Color="#606060" Offset="0.81" />
                                    <GradientStop Color="#404040" Offset="1" />
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="FontWeight" Value="Bold"/>
                               <Setter TargetName="ButtonBackground" Property="Background">
                            <Setter.Value>
                                <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
                                    <GradientStop Color="#e5e5e5" Offset="0" />
                                    <GradientStop Color="#dfdfdf" Offset="0.75" />
                                    <GradientStop Color="#606060" Offset="0.75" />
                                    <GradientStop Color="#303030" Offset="1" />
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

注意:与您的情况相关,您可以添加属性:

代码语言:javascript
复制
<Setter Property="Height" Value="147"/>
<Setter Property="Width" Value="31"/>
<Setter Property="Margin" Value="490,10,10,10"/>

将Button引用添加到XAML中的样式,如下所示:

或者,您可以通过添加对ResourceDictionary的引用来向C#中的按钮添加样式,如下所示(在此示例中,您必须分配/使用按钮名称):

代码语言:javascript
复制
[ButtonName].Style = this.Resources["Button_Default"] as Style;

希望这能有所帮助。Rgds,Alex

票数 0
EN

Stack Overflow用户

发布于 2014-06-21 12:21:50

您可以使用此代码。这可能会对你有帮助。

代码语言:javascript
复制
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication8.Window1"
x:Name="Window"
Title="Window1"
Width="640" Height="480">
<Window.Resources>
    <ControlTemplate x:Key="ButtonControlTemplate1" TargetType="{x:Type Button}">
        <Border Height="30" Width="150" BorderBrush="RoyalBlue" BorderThickness="2">
            <Border.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="WhiteSmoke" Offset="0.347"/>
                    <GradientStop Color="#FF7D91C0" Offset="0.656"/>
                </LinearGradientBrush>
            </Border.Background>
            <ContentPresenter TextElement.FontSize="15" TextElement.FontWeight="Bold"  HorizontalAlignment="Center" VerticalAlignment="Center"/>


        </Border>
    </ControlTemplate>
</Window.Resources>

<Grid x:Name="LayoutRoot">
    <Button Content="OK" Margin="172,43,269,0" VerticalAlignment="Top" Template="{DynamicResource ButtonControlTemplate1}"/>
</Grid>

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24336704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档