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>