时间:2015年03月27日 | 作者 : aaronyang | 分类 : WPF | 浏览: 9260次 | 评论 1 人
<Window.Resources> <sys:Double x:Key="TabItemShadowRadius">6</sys:Double> <Color x:Key="AyTabItem.Static.Shadow.Color1">#7F000000</Color> <Color x:Key="AyTabItem.Static.Shadow.Color2">#00000000</Color> <SolidColorBrush x:Key="TabItemShadowColor" Color="#E5404040"/> <Style x:Key="AyTabControl" TargetType="{x:Type TabControl}"> <Setter Property="Padding" Value="4"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Background" Value="White"/> <Setter Property="BorderBrush" Value="#FFACACAC"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TabControl}"> <Grid x:Name="templateRoot" ClipToBounds="True" SnapsToDevicePixels="True" KeyboardNavigation.TabNavigation="Local"> <Grid.ColumnDefinitions> <ColumnDefinition x:Name="ColumnDefinition0"/> <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition x:Name="RowDefinition0" Height="Auto"/> <RowDefinition x:Name="RowDefinition1" Height="*"/> </Grid.RowDefinitions> <TabPanel x:Name="HeaderPanel" Background="Transparent" Grid.Column="0" IsItemsHost="True" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/> <Border Grid.Column="0" x:Name="ContentPanel" Grid.Row="1" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" KeyboardNavigation.DirectionalNavigation="Contained" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local"> <Border.Effect> <DropShadowEffect ShadowDepth="1" Direction="340" BlurRadius="6" Color="#FF818181"/> </Border.Effect> <ContentPresenter x:Name="PART_SelectedContentHost" ContentTemplate="{TemplateBinding SelectedContentTemplate}" Content="{TemplateBinding SelectedContent}" ContentStringFormat="{TemplateBinding SelectedContentStringFormat}" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="TabStripPlacement" Value="Bottom"> <Setter Property="Grid.Row" TargetName="HeaderPanel" Value="1"/> <Setter Property="Grid.Row" TargetName="ContentPanel" Value="0"/> <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> <Setter Property="Height" TargetName="RowDefinition1" Value="Auto"/> <Setter Property="Margin" TargetName="HeaderPanel" Value="2,0,2,2"/> </Trigger> <Trigger Property="TabStripPlacement" Value="Left"> <Setter Property="Grid.Row" TargetName="HeaderPanel" Value="0"/> <Setter Property="Grid.Row" TargetName="ContentPanel" Value="0"/> <Setter Property="Grid.Column" TargetName="HeaderPanel" Value="0"/> <Setter Property="Grid.Column" TargetName="ContentPanel" Value="1"/> <Setter Property="Width" TargetName="ColumnDefinition0" Value="Auto"/> <Setter Property="Width" TargetName="ColumnDefinition1" Value="*"/> <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> <Setter Property="Margin" TargetName="HeaderPanel" Value="2,2,0,2"/> </Trigger> <Trigger Property="TabStripPlacement" Value="Right"> <Setter Property="Grid.Row" TargetName="HeaderPanel" Value="0"/> <Setter Property="Grid.Row" TargetName="ContentPanel" Value="0"/> <Setter Property="Grid.Column" TargetName="HeaderPanel" Value="1"/> <Setter Property="Grid.Column" TargetName="ContentPanel" Value="0"/> <Setter Property="Width" TargetName="ColumnDefinition0" Value="*"/> <Setter Property="Width" TargetName="ColumnDefinition1" Value="Auto"/> <Setter Property="Height" TargetName="RowDefinition0" Value="*"/> <Setter Property="Height" TargetName="RowDefinition1" Value="0"/> <Setter Property="Margin" TargetName="HeaderPanel" Value="0,2,2,2"/> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}"> <Setter Property="TextBlock.Foreground" Value="#2B2A50" /> <Setter Property="TextBlock.FontSize" Value="12" /> <Setter Property="FocusVisualStyle" Value="{x:Null}"/> <Setter Property="SnapsToDevicePixels" Value="true"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TabItem}"> <Grid Margin="-3,0,0,0"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Rectangle Grid.Column="0" Grid.Row="0" Fill="{StaticResource TabItemShadowColor}" Width="{StaticResource TabItemShadowRadius}" Height="{StaticResource TabItemShadowRadius}"> <Rectangle.OpacityMask> <RadialGradientBrush GradientOrigin="1.468,1.393" RadiusX="0.417" RadiusY="0.417" Center="0.983,0.98"> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color1}" Offset="0.555"/> <GradientStop Color="#33000000" Offset="0.855"/> <GradientStop Color="#00000000" Offset="1"/> </RadialGradientBrush> </Rectangle.OpacityMask> </Rectangle> <Rectangle Grid.Column="2" Grid.Row="0" Fill="{StaticResource TabItemShadowColor}" Width="{StaticResource TabItemShadowRadius}" Height="{StaticResource TabItemShadowRadius}"> <Rectangle.OpacityMask> <RadialGradientBrush GradientOrigin="-0.592,1.43" RadiusX="0.417" RadiusY="0.417" Center="0.22,0.82"> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color1}" Offset="0.434"/> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color2}" Offset="0.879"/> </RadialGradientBrush> </Rectangle.OpacityMask> </Rectangle> <Rectangle Grid.Column="1" Grid.Row="0" Width="140" Height="{StaticResource TabItemShadowRadius}" Fill="{StaticResource TabItemShadowColor}"> <Rectangle.OpacityMask> <LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1"> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color1}"/> <GradientStop Offset="1"/> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color2}" Offset="0.84"/> <GradientStop Color="#199B9B9B" Offset="0.34"/> </LinearGradientBrush> </Rectangle.OpacityMask> </Rectangle> <Rectangle Grid.Column="0" Grid.Row="1" Width="{StaticResource TabItemShadowRadius}" Height="36" Fill="{StaticResource TabItemShadowColor}"> <Rectangle.OpacityMask> <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5"> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color1}"/> <GradientStop Offset="1"/> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color2}" Offset="0.54"/> </LinearGradientBrush> </Rectangle.OpacityMask> </Rectangle> <Rectangle Grid.Column="2" Grid.Row="1" Width="{StaticResource TabItemShadowRadius}" Height="36" Fill="{StaticResource TabItemShadowColor}"> <Rectangle.OpacityMask> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color1}"/> <GradientStop Offset="1"/> <GradientStop Color="{StaticResource AyTabItem.Static.Shadow.Color2}" Offset="0.46"/> </LinearGradientBrush> </Rectangle.OpacityMask> </Rectangle> <Border CornerRadius="0,0,0,0" Grid.Row="1" Grid.Column="1" x:Name="tabItemBorder" Height="35" Background="#7FFFFFFF" Width="140" > <ContentPresenter x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"> </ContentPresenter> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter TargetName="tabItemBorder" Property="Background" Value="#FFFFFF" /> <Setter Property="Panel.ZIndex" Value="100" /> </Trigger> <Trigger Property="IsSelected" Value="false"> <Setter Property="Panel.ZIndex" Value="-1" /> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="false"></Condition> <Condition Property="IsMouseOver" Value="True"></Condition> </MultiTrigger.Conditions> <Setter TargetName="tabItemBorder" Property="Background" Value="#B2FFFFFF" /> </MultiTrigger> <Trigger Property="TabStripPlacement" Value="Left"> <Setter Property="LayoutTransform"> <Setter.Value> <RotateTransform Angle="-90" /> </Setter.Value> </Setter> </Trigger> <Trigger Property="TabStripPlacement" Value="Right"> <Setter Property="LayoutTransform"> <Setter.Value> <RotateTransform Angle="90" /> </Setter.Value> </Setter> </Trigger> <Trigger Property="TabStripPlacement" Value="Bottom"> <Setter Property="LayoutTransform"> <Setter.Value> <RotateTransform Angle="180" /> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources>
使用方法:
<TabControl BorderThickness="1,0,1,1" HorizontalAlignment="Left" Height="374.1" Margin="50,50,0,0" VerticalAlignment="Top" Width="950" Style="{DynamicResource AyTabControl}" TabStripPlacement="Top" > <TabItem Header="aaronyang生活"> <TabItem.Background> <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> <GradientStop Color="#FFA1B8D3" Offset="0"/> <GradientStop Color="#FFABC3DF" Offset="0.067"/> <GradientStop Color="#FFA5B9D4" Offset="0.967"/> <GradientStop Color="#FF194177" Offset="1"/> </LinearGradientBrush> </TabItem.Background> <TextBlock FontSize="36" Text="aaronyang的生活" VerticalAlignment="Center" HorizontalAlignment="Center"/> </TabItem> <TabItem Header="aaronyang快递" > <Grid > <TextBlock FontSize="36" Text="aaronyang的快递" VerticalAlignment="Center" HorizontalAlignment="Center"/> </Grid> </TabItem> <TabItem Header="aaronyang尊重"> <Grid > <TextBlock FontSize="36" Text="aaronyang的尊重" VerticalAlignment="Center" HorizontalAlignment="Center"/> </Grid> </TabItem> </TabControl>
效果图(只支持顶部样式):
当然更好的AyTabControl效果预览:
支持多种布局
动态图演示: 请点击http://www.ayjs.net/zb_users/upload/2015/03/201503271427419580606684.gif
推荐您阅读更多有关于“WPF4.5,Ay.Framework.WPF,”的文章
抖音:wpfui 工作wpf
目前在合肥企迈科技公司上班,加我QQ私聊
2023年11月网站停运,将搬到CSDN上
AYUI8全源码 Github地址:前往获取
杨洋(AaronYang简称AY,安徽六安人)和AY交流
高中学历,2010年开始web开发,2015年1月17日开始学习WPF
声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费
查看捐赠AYUI7.X MVC教程 更新如下:
第一课 第二课 程序加密教程
已有1位网友发表了看法:
av快递辛苦了
发表评论