WPF自定义控件(三)——Window
2020-12-13 15:29
标签:winform style blog http io color ar os for 一样!先来看看效果吧: 怎么样?效果很好吧,而且不只是样式哟!所有系统窗体有的交互操作都可以实现! 但可惜。。。有很多和系统API有关的东西本人了解得并不多,所以这个窗体是基于他人的成果上产生的。关于窗体交互的东西还是看看原作者的吧: http://blog.csdn.net/dlangu0393/article/details/12548731 接下来说说我在这上面多加的功能:可设置标题栏可见性,可扩展标题栏下拉按钮,可全屏并拦截键盘,另外还多公布了一些属性 再来一张图: 这就是没有标题栏的,只是设置一个属性就可以了哟! 废话不多说了!再来看看我代码,只发一些我加了的吧,上面的链接里有的我就不发了,想看完整的,之后我会发源码的。 先是Xaml的: 还有CS的: 好啦!太多了,有点乱是吧!待会我把源码发上来吧!大家看看!多多提意见啊! WPF自定义控件(三)——Window 标签:winform style blog http io color ar os for 原文地址:http://www.cnblogs.com/QinYK/p/4075205.html 1 ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3 xmlns:ctrl="clr-namespace:KAN.WPF.XCtrl.Controls" >
4 Style x:Key="XWindowStyle" TargetType="ctrl:XWindow">
5 Setter Property="AllowsTransparency" Value="True"/>
6 Setter Property="Background" Value="Transparent"/>
7 Setter Property="WindowStyle" Value="None"/>
8
9 Setter Property="UseLayoutRounding" Value="True"/>
10 Setter Property="RenderOptions.BitmapScalingMode" Value="NearestNeighbor" />
11 Setter Property="TextOptions.TextFormattingMode" Value="Display" />
12
13 Setter Property="FontFamily" Value="Microsoft YaHei" />
14 Setter Property="Template">
15 Setter.Value>
16 ControlTemplate TargetType="ctrl:XWindow">
17 Border x:Name="bdrWindow" CornerRadius="5" Margin="8" Background="White"
18 BorderBrush="#6A6A6A" BorderThickness="1" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" >
19 Border.Effect>
20 DropShadowEffect BlurRadius="8" ShadowDepth="0" Color="#00000000"/>
21 Border.Effect>
22 Grid>
23 Grid.RowDefinitions>
24 RowDefinition Height="Auto"/>
25 RowDefinition Height="*"/>
26 Grid.RowDefinitions>
27 Border Name="bdrTitleBar" Height="28" CornerRadius="5,5,0,0" Panel.ZIndex="10" >
28 Border.Background>
29 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndTitleBar.png" />
30 Border.Background>
31 DockPanel Margin="0" >
32 Image DockPanel.Dock="Left" Name="imgIcon" VerticalAlignment="Top" Width="15" Height="15"
33 Margin="5 5 0 0" Source="{TemplateBinding Icon}" Style="{DynamicResource ImgIconStyle}">
34 Image>
35 TextBlock DockPanel.Dock="Left" Name="txbTitle" VerticalAlignment="Top"
36 Margin="5 5 0 0" FontSize="12" FontWeight="Bold" Foreground="#FF101010" Text="{TemplateBinding Title}" />
37 StackPanel Orientation="Horizontal" HorizontalAlignment="Right"
38 DockPanel.Dock="Right" Height="28" VerticalAlignment="Top">
39 ctrl:XButton x:Name="btnDropDown" Width="28" Height="28" BorderThickness="0" Visibility="Collapsed">
40 ctrl:XButton.Background>
41 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnDropDown.png" />
42 ctrl:XButton.Background>
43 ctrl:XButton.XMoverBrush>
44 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnDropDownMove.png" />
45 ctrl:XButton.XMoverBrush>
46 ctrl:XButton.XEnterBrush>
47 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnDropDownMove.png" />
48 ctrl:XButton.XEnterBrush>
49 ctrl:XButton>
50 ctrl:XButton x:Name="btnMin" Width="28" Height="28" BorderThickness="0" >
51 ctrl:XButton.Background>
52 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMin.png" />
53 ctrl:XButton.Background>
54 ctrl:XButton.XMoverBrush>
55 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMinMove.png" />
56 ctrl:XButton.XMoverBrush>
57 ctrl:XButton.XEnterBrush>
58 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMinEnter.png" />
59 ctrl:XButton.XEnterBrush>
60 ctrl:XButton>
61 ctrl:XButton x:Name="btnMax" Width="28" Height="28" BorderThickness="0" >
62 ctrl:XButton.Background>
63 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMax.png" />
64 ctrl:XButton.Background>
65 ctrl:XButton.XMoverBrush>
66 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMaxMove.png" />
67 ctrl:XButton.XMoverBrush>
68 ctrl:XButton.XEnterBrush>
69 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnMaxEnter.png" />
70 ctrl:XButton.XEnterBrush>
71 ctrl:XButton>
72 ctrl:XButton x:Name="btnClose" Width="28" Height="28" BorderThickness="0" >
73 ctrl:XButton.Background>
74 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnClose.png" />
75 ctrl:XButton.Background>
76 ctrl:XButton.XMoverBrush>
77 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnCloseMove.png" />
78 ctrl:XButton.XMoverBrush>
79 ctrl:XButton.XEnterBrush>
80 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndBtnCloseEnter.png" />
81 ctrl:XButton.XEnterBrush>
82 ctrl:XButton>
83 StackPanel>
84 DockPanel>
85 Border>
86
87 AdornerDecorator Grid.Row="1" Height="Auto" Width="Auto">
88 Grid>
89 Border Name="bdrShadow" Height="5" VerticalAlignment="Top" Panel.ZIndex="100" HorizontalAlignment="Stretch">
90 Border.Background>
91 ImageBrush ImageSource="/KAN.WPF.Xctrl;component/Images/XWindow/WndTitleShadow.png" />
92 Border.Background>
93 Border>
94 ContentPresenter/>
95 Grid>
96 AdornerDecorator>
97 Grid>
98 Border>
99 ControlTemplate.Triggers>
100
101 Trigger Property="ResizeMode" Value="NoResize">
102 Setter TargetName="btnMin" Property="Visibility" Value="Collapsed">Setter>
103 Setter TargetName="btnMax" Property="Visibility" Value="Collapsed">Setter>
104 Trigger>
105 Trigger Property="ResizeMode" Value="CanMinimize">
106 Setter TargetName="btnMax" Property="Visibility" Value="Collapsed">Setter>
107 Trigger>
108
109 Trigger Property="XIsShowBdrTitleBar" Value="false">
110 Setter TargetName="bdrTitleBar" Property="Visibility" Value="Collapsed">Setter>
111 Trigger>
112
113 Trigger Property="XIsShowBtnDropDown" Value="true">
114 Setter TargetName="btnDropDown" Property="Visibility" Value="Visible">Setter>
115 Trigger>
116 ControlTemplate.Triggers>
117 ControlTemplate>
118 Setter.Value>
119 Setter>
120 Style>
121 ResourceDictionary>
1 ///
上一篇:js键盘事件