WPF样式

TreeViewItem、TextBox、Button、RichTextBox、ComboBox、GroupBox、带Path的Button、ContextMenu样式:


<ControlTemplate x:Key="tmplSeparator" TargetType="Separator">
    <Border Background="#fff">
    Border>
ControlTemplate>

<ControlTemplate x:Key="tmplContextMenu" TargetType="ContextMenu">
    <Border Name="bd" Background="#000613" CornerRadius="4">
        <ItemsPresenter Margin="0 8 0 8"/>
    Border>
ControlTemplate>

<ControlTemplate x:Key="tmplMenuItem" TargetType="MenuItem">
    <Border Name="bd" Height="35" Background="Transparent">
        <StackPanel Orientation="Horizontal">
            <Image x:Name="img" Stretch="None" Margin="10 0 10 0" Source="/SunCreate.Common.Controls;Component/Images/Controls/二级菜单左箭头.png">Image>
            <TextBlock x:Name="tb" Margin="0 0 10 0" Foreground="#fff" VerticalAlignment="Center" Text="{Binding Header, RelativeSource={RelativeSource TemplatedParent}}"/>
        StackPanel>
    Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="bd" Property="Background" Value="#111623" />
            <Setter TargetName="tb" Property="Foreground" Value="#FF5E5E" />
            <Setter TargetName="tb" Property="Margin" Value="0 0 9 0" />
            <Setter TargetName="img" Property="Source" Value="/SunCreate.Common.Controls;Component/Images/Controls/左箭头_选中.png">Setter>
        Trigger>
    ControlTemplate.Triggers>
ControlTemplate>

<ControlTemplate x:Key="tmplTreeViewItem" TargetType="{x:Type TreeViewItem}">
    <StackPanel>
        <StackPanel Orientation="Horizontal">
            <ToggleButton x:Name="toggleButton" Focusable="True" IsChecked="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},Path=IsExpanded,Mode=TwoWay}" IsTabStop="False">
                <ToggleButton.Template>
                    <ControlTemplate TargetType="{x:Type ToggleButton}" >
                        <Border Height="20" Width="20" Background="Transparent">
                            <Path Height="7" Width="7" Stretch="Fill" HorizontalAlignment="Center" Name="expander" RenderTransformOrigin="0.5,0.5" Data="M0,0 L0,6 L6,0 z" Stroke="#ffffff" StrokeThickness="1"  VerticalAlignment="Center"  Visibility="{Binding ExpandVisibility}">
                            Path>
                        Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="true">
                                <Setter Property="RenderTransform" TargetName="expander">
                                    <Setter.Value>
                                        <RotateTransform Angle="180"/>
                                    Setter.Value>
                                Setter>
                                <Setter Property="Fill" TargetName="expander" Value="#ffffff">
                                Setter>
                            Trigger>
                            <Trigger Property="IsChecked" Value="false">
                                <Setter Property="RenderTransform" TargetName="expander">
                                    <Setter.Value>
                                        <RotateTransform Angle="135"/>
                                    Setter.Value>
                                Setter>
                                <Setter Property="Fill" TargetName="expander" Value="#333">
                                Setter>
                            Trigger>
                        ControlTemplate.Triggers>
                    ControlTemplate>
                ToggleButton.Template>
            ToggleButton>
            <Grid Background="Transparent">
                <Border x:Name="itemContainer" Height="30" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="2 0 0 0" CornerRadius="2" Background="Transparent" Tag="{Binding}" MouseLeftButtonDown="itemContainer_MouseLeftButtonDown" MouseRightButtonDown="itemContainer_MouseRightButtonDown" >
                    <TextBlock x:Name="textBlock" Margin="5 0 5 0" Text="{Binding Name}" Foreground="#ffffff" FontSize="{Binding FontSize}" VerticalAlignment="Center" />
                Border>
                <Grid.ContextMenu>
                    <ContextMenu Template="{StaticResource tmplContextMenu}">
                        <MenuItem Header="新增" Template="{StaticResource tmplMenuItem}"  Tag="{Binding}" CommandParameter="1" Click="MenuItem_Click" Visibility="{Binding AddMenuVisibility}">MenuItem>
                        <MenuItem Header="新增监所区域" Template="{StaticResource tmplMenuItem}"  Tag="{Binding}" CommandParameter="3" Click="MenuItem_Click" Visibility="{Binding AddPrisonZoomMenuVisibility}">MenuItem>
                        <Separator Height="1" Template="{StaticResource tmplSeparator}" Margin="1 0 1 0">Separator>
                        <MenuItem Header="删除" Template="{StaticResource tmplMenuItem}"  Tag="{Binding}" CommandParameter="2" Click="MenuItem_Click">MenuItem>
                    ContextMenu>
                Grid.ContextMenu>
            Grid>
        StackPanel>
        <Grid  x:Name="itemspanel" Visibility="Collapsed" Margin="15 0 0 0">
            <ItemsPresenter/>
        Grid>
    StackPanel>
    <ControlTemplate.Triggers>
        <Trigger Property="IsSelected" Value="true">
            <Setter Property="Foreground" TargetName="textBlock" Value="#ffffff"/>
            <Setter Property="Background" TargetName="itemContainer" Value="#00ddcc"/>
        Trigger>
        <Trigger Property="IsExpanded" Value="true">
            <Setter TargetName="itemspanel" Property="Visibility" Value="Visible"/>
        Trigger>
    ControlTemplate.Triggers>
ControlTemplate>

<Style x:Key="stlTreeViewItem" TargetType="{x:Type TreeViewItem}">
    <Setter Property="Template" Value="{StaticResource tmplTreeViewItem}">Setter>
    <Setter Property="ItemsSource" Value="{Binding Children}">Setter>
    <Setter Property="IsExpanded" Value="{Binding IsExpanded}">Setter>
    <Setter Property="IsSelected" Value="{Binding IsSelected}">Setter>
    <Setter Property="Tag" Value="{Binding}">Setter>
    <EventSetter Event="Selected" Handler="TreeViewItem_Selected">EventSetter>
Style>

<ControlTemplate x:Key="tmplPathBtn" TargetType="{x:Type Button}">
    <Border x:Name="border" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Background="Transparent" >
        <Path x:Name="path1" Width="12" Height="12" Fill="#ffffff" Stretch="Fill" Data="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center" >
        Path>
    Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="true">
        Trigger>
        <Trigger Property="IsEnabled" Value="false">
        Trigger>
    ControlTemplate.Triggers>
ControlTemplate>

<ControlTemplate x:Key="tmplTextBox">
    <Border CornerRadius="3" Background="#000613" BorderBrush="#aaaaaa" BorderThickness="1">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition>ColumnDefinition>
                <ColumnDefinition Width="25">ColumnDefinition>
            Grid.ColumnDefinitions>
            <ScrollViewer x:Name="PART_ContentHost" Margin="2 0 0 0" VerticalAlignment="Center">ScrollViewer>
            <TextBlock  x:Name="prompt" Visibility="Collapsed" Foreground="#ffffff" FontSize="14" Text="请输入内容" Margin="10,0,0,0" VerticalAlignment="Center" Opacity="0.4">TextBlock>
            <Button x:Name="btnClear" Grid.Column="1"  Width="16"  Height="16" Click="btnClear_Click" HorizontalAlignment="Center" VerticalAlignment="Center"  Template="{StaticResource tmplPathBtn}" Background="Transparent" >
                <Geometry>M1,0 L6,5 L11,0 L12,1 L7,6 L12,11 L11,12 L6,7 L1,12 L0,11 L5,6 L0,1 zGeometry>
            Button>
        Grid>
    Border>
    <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
            <Setter TargetName="btnClear" Property="Visibility" Value="Collapsed">Setter>
        DataTrigger>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="">
            <Setter TargetName="prompt" Property="Visibility" Value="Visible">Setter>
        DataTrigger>
        <Trigger  Property="IsFocused" Value="true">
            <Setter TargetName="prompt" Property="Visibility" Value="Collapsed">Setter>
        Trigger>
    ControlTemplate.Triggers>
ControlTemplate>

<Style x:Key="stlTextBox" TargetType="{x:Type TextBox}">
    <Setter Property="Template" Value="{StaticResource tmplTextBox}">Setter>
    <Setter Property="Height" Value="35">Setter>
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate>
                <Border BorderThickness="0" BorderBrush="Transparent" Visibility="Collapsed">
                    <AdornedElementPlaceholder />
                Border>
            ControlTemplate>
        Setter.Value>
    Setter>
Style>

<ControlTemplate x:Key="tmplButton" TargetType="{x:Type Button}">
    <Border x:Name="border" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Background="#1495eb" CornerRadius="5">
        <TextBlock Foreground="#ffffff" Text="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center">TextBlock>
    Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="true">
            <Setter TargetName="border" Property="Background" Value="#33c4f5">Setter>
        Trigger>
        <Trigger Property="IsPressed" Value="true">
        Trigger>
        <Trigger Property="IsEnabled" Value="false">
        Trigger>
    ControlTemplate.Triggers>
ControlTemplate>

<Style x:Key="stlButton" TargetType="{x:Type Button}">
    <Setter Property="Template" Value="{StaticResource tmplButton}">Setter>
    <Setter Property="Height" Value="33">Setter>
Style>

<Style x:Key="stlRichTextBox" TargetType="{x:Type RichTextBox}" >
    <Setter Property="VerticalScrollBarVisibility" Value="Auto" />
    <Setter Property="Margin" Value="5 0 0 0" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="CaretBrush" Value="White" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type RichTextBox}">
                <Border CornerRadius="3" Background="#000613" BorderBrush="#aaaaaa" BorderThickness="1">
                    <Grid>
                        <Label x:Name="prompt" Margin="5 0 0 0" Content="请输入内容" Foreground="#ffffff" FontSize="14" Opacity="0.4" VerticalAlignment="Top" Visibility="Collapsed" Focusable="False" />
                        <Border x:Name="border" Margin="0 8 0 5">
                            <ScrollViewer Margin="0" VerticalAlignment="Top" x:Name="PART_ContentHost" Height="{Binding ActualHeight, ElementName=border}" />
                        Border>
                    Grid>
                Border>
                <ControlTemplate.Triggers>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsFocused" Value="False" />
                            <Condition Property="Tag" Value="{x:Null}" />
                        MultiTrigger.Conditions>
                        <Setter Property="Visibility" TargetName="prompt" Value="Visible" />
                    MultiTrigger>
                    <Trigger Property="IsFocused" Value="True">
                    Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Foreground" Value="Gray" />
                    Trigger>
                ControlTemplate.Triggers>
            ControlTemplate>
        Setter.Value>
    Setter>
Style>

<Style x:Key="stlToggleButton" TargetType="{x:Type ToggleButton}" >
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid Background="Transparent">
                    <Border x:Name="Back" Background="Transparent" BorderThickness="0" BorderBrush="Transparent">
                        <Path x:Name="PathFill" Fill="#aaaaaa" Width="12" Height="8" StrokeThickness="0" Data="M5,0 L10,10 L0,10 z" RenderTransformOrigin="0.5,0.5" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" SnapsToDevicePixels="True" UseLayoutRounding="True">
                            <Path.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform />
                                    <SkewTransform />
                                    <RotateTransform Angle="180" />
                                    <TranslateTransform />
                                TransformGroup>
                            Path.RenderTransform>
                        Path>
                    Border>
                Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="PathFill" Property="Fill" Value="#1b94e0" />
                        <Setter TargetName="Back" Property="Background" Value="Transparent" />
                        <Setter TargetName="Back" Property="BorderBrush" Value="Transparent" />
                    Trigger>
                ControlTemplate.Triggers>
            ControlTemplate>
        Setter.Value>
    Setter>
Style>

<Style x:Key="stlComboBox" TargetType="ComboBox" >
    <Setter Property="SnapsToDevicePixels" Value="True"/>
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
    <Setter Property="HorizontalAlignment" Value="Left">Setter>
    <Setter Property="Foreground" Value="#ffffff">Setter>
    <Setter Property="Height" Value="35">Setter>
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="ComboBoxItem">
                <Setter Property="Height" Value="30"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ComboBoxItem}">
                            <Grid Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
                                <Border x:Name="border" Background="Transparent">
                                    <TextBlock x:Name="txt" Margin="5 0 3 0" VerticalAlignment="Center" Foreground="#ffffff" Text="{Binding Content.Key,RelativeSource={RelativeSource TemplatedParent}}"/>
                                Border>
                            Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="true">
                                    <Setter TargetName="border" Property="Background" Value="#707683" />
                                Trigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="IsSelected" Value="false"/>
                                        <Condition Property="IsMouseOver" Value="true"/>
                                    MultiTrigger.Conditions>
                                    <Setter TargetName="border" Property="Background" Value="#808693" />
                                MultiTrigger>
                            ControlTemplate.Triggers>
                        ControlTemplate>
                    Setter.Value>
                Setter>
            Style>
        Setter.Value>
    Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ComboBox">
                <Border Background="#000613" BorderThickness="1" BorderBrush="#aaaaaa" CornerRadius="4">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition>ColumnDefinition>
                            <ColumnDefinition Width="30">ColumnDefinition>
                        Grid.ColumnDefinitions>
                        <TextBlock Margin="5 0 0 0" Grid.Column="0" Foreground="#ffffff" Text="{TemplateBinding Text}" Background="Transparent" VerticalAlignment="Center" HorizontalAlignment="Left">TextBlock>
                        <ToggleButton  Grid.Column="1" Width="30" Height="30" Style="{StaticResource stlToggleButton}" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" HorizontalAlignment="Center" VerticalAlignment="Center">ToggleButton>

                        <Popup x:Name="Popup" IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" VerticalOffset="5" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide">
                            <Border x:Name="DropDown" CornerRadius="4" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{TemplateBinding ActualWidth}" SnapsToDevicePixels="True"  Background="#000613" BorderBrush="#aaaaaa" BorderThickness="1">
                                <Border.Effect>
                                    <DropShadowEffect Color="#000613" BlurRadius="2" ShadowDepth="0" Opacity="0.5"/>
                                Border.Effect>
                                <ScrollViewer Margin="4,6,4,6" Style="{DynamicResource ScrollViewerStyle}" MaxHeight="{TemplateBinding MaxDropDownHeight}" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True">
                                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained"/>
                                ScrollViewer>
                            Border>
                        Popup>
                    Grid>
                Border>
            ControlTemplate>
        Setter.Value>
    Setter>
Style>

<BorderGapMaskConverter x:Key="borderGapMaskConverter"/>
<Style x:Key="stlGroupBox" TargetType="{x:Type GroupBox}">
    <Setter Property="BorderBrush" Value="#ddddee" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupBox}">
                <Grid SnapsToDevicePixels="true">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="6" />
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="6" />
                    Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                        <RowDefinition Height="6" />
                    Grid.RowDefinitions>
                    <Border CornerRadius="4" Grid.Row="1" Grid.RowSpan="3" Grid.Column="0" Grid.ColumnSpan="4" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="Transparent" Background="{TemplateBinding Background}" />
                    <Border Name="Header" Padding="3,1,3,0" Grid.Row="0" Grid.RowSpan="2" Grid.Column="1">
                        <ContentPresenter ContentSource="Header" RecognizesAccessKey="true" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    Border>
                    <ContentPresenter Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    <Border Grid.Row="1" Grid.RowSpan="3" Grid.ColumnSpan="4"  BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3">
                        <Border.OpacityMask>
                            <MultiBinding Converter="{StaticResource borderGapMaskConverter}" ConverterParameter="7">
                                <Binding ElementName="Header" Path="ActualWidth" />
                                <Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" />
                                <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" />
                            MultiBinding>
                        Border.OpacityMask>
                    Border>
                Grid>
            ControlTemplate>
        Setter.Value>
    Setter>
Style>
View Code

 

你可能感兴趣的:(WPF样式)