-
-
Notifications
You must be signed in to change notification settings - Fork 113
WindowX zh CN
适用于: v1.0.0
或更新的版本
类名: WindowX
命名空间: Panuon.WPF.UI
位于: SharedResources/Panuon.WPF.UI/Controls/WindowX.cs
继承自: System.Windows.Window
, System.ComponentModel.INotifyPropertyChanged
提供一系列属性和方法, 用于扩展 Window 控件的功能。
有关为窗体自定义标题栏的更多内容, 请参考 WindowXCaption 标题栏辅助类。
有关为窗体提供模态按钮的更多内容,请参考 WindowXModalDialog 模态对话框辅助类。
当 IsEnabled
属性的值设为 False 时, Opacity
的属性值将与 GlobalSettings.Setting.DisabledOpacity
属性的值绑定(它的默认值为 0.4
)。有关全局设置的更多内容, 请参考 GlobalSettings
辅助类。
当 IsMaskVisible
属性的值设为 True
时, DisableDragMove
的属性值将被置为 True
。
当 IsFullScreen
属性的值设为 True
时, WindowStyle
的属性值将被置为 None
。
InteropOwnersMask
属性的默认值为 True
, 父窗体的遮罩层将随当前窗体的打开或关闭同步发生变化。
WindowX
默认不支持圆角, 但你仍然可以通过修改 WindowChrome.WindowChrome
属性来定义窗体圆角(但这将使你的窗体失去阴影,或失去拖拽调整窗体大小的功能。在Net40中修改 WindowChrome.WindowChrome
, 你还需要引用 xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell"
命名空间)。要查看设置圆角后的效果,参见示例4。
在使用 WindowX
时,你的页面后端 .xaml.cs
中的窗体继承基类也要从 Window
更改为 Panuon.WPF.UI.WindowX
。否则将引发编译失败。
类型: System.Boolean
默认值: False
获取或设置是否允许用户按下Esc键来关闭窗体。
类型: System.Boolean
默认值: False
获取或设置是否进入全屏模式。
类型: System.Boolean
默认值: False
获取或设置是否允许用户按下F11键来切换全屏模式。
类型: System.Boolean
默认值: True
获取或设置是否允许当前窗体被用户关闭(包括强制关闭)。调用 Close()
仍然可以正常关闭窗体。
类型: System.Boolean
默认值: False
获取或设置是否允许当前窗体被拖拽更改位置。
类型: System.Boolean
默认值: False
获取或设置是否显示窗体遮罩。
类型: System.Media.Brush
默认值: #B3FFFFFF
获取或设置窗体遮罩的色彩画刷。
类型: System.Object
默认值: {Null}
获取或设置覆盖层的内容。覆盖层位于窗体遮罩之上。
类型: System.Boolean
默认值: False
获取或设置是否显示覆盖层。
类型: System.Object
默认值: {Null}
获取或设置幕布层的内容。幕布层位于窗体内容与窗体遮罩之间。
类型: System.Boolean
默认值: False
获取或设置是否显示幕布层。
类型: System.Boolean
默认值: True
获取或设置是否自动与 Owner
窗体的遮罩层进行交互。若父窗体为 WindowX
类型:窗体打开时自动打开父窗体的窗体遮罩;窗体关闭时, 若父窗体没有其他的子窗体, 则自动关闭父窗体的窗体遮罩。
类型: Panuon.WPF.UI.WindowXEffect
默认值: Null
获取或设置窗体X的特效(可用的特效仅对WindowX控件生效,不支持其他控件)。较早的Windows版本可能不支持使用特效。
该属性自v2.2.12-alpha以上可用。
<pu:WindowX.Effect>
<pu:AeroWindowXEffect Background="#66FFFFFF" />
</pu:WindowX.Effect>
请注意,由于系统原因,在Windows 10 1903以上的版本中,启用此特效并拖拽、缩放窗体会造成显著延迟与卡顿。
<pu:WindowX.Effect>
<pu:AcrylicWindowXEffect AccentColor="#66FFFFFF" />
</pu:WindowX.Effect>
类型: System.Boolean
默认值: False
获取或设置是否将该控件标记为窗体拖拽区域的一部分。请注意, 如果没有为控件指定非 Null 的背景色, 拖拽可能不会生效。
最小化当前窗体。
最大化当前窗体。
正常化窗体大小。
最大化窗体(如果窗体状态为正常化)或正常化窗体(如果窗体状态为最大化)。
最小化窗体(如果窗体状态为正常化)或正常化窗体(如果窗体状态为最小化)。
通知属性发生了变化。仅在 DataContext = this
时可用。
通知属性发生了变化。仅在 DataContext = this
时可用。
设置字段对应的属性值, 并通知属性发生了变化。仅在 DataContext = this
时可用。
最小化当前窗体。
最大化当前窗体。
关闭窗体。
<pu:WindowX x:Class="WpfApplication.FooView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
mc:Ignorable="d"
Title="FooView"
Height="250"
Width="400"
BorderThickness="1">
<Window.BorderBrush>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<GradientStop Offset="0"
Color="#6CBCEA" />
<GradientStop Offset="1"
Color="#005869" />
</LinearGradientBrush>
</Window.BorderBrush>
</pu:WindowX>
<pu:WindowX x:Class="WpfApplication.FooView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
mc:Ignorable="d"
Title="FooView"
Height="350"
Width="500"
pu:WindowXCaption.Height="40"
pu:WindowXCaption.Buttons="Close">
<pu:WindowXCaption.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Margin="10,0,0,0"
Source="/Samples;component/Resources/Logo.png"
RenderOptions.BitmapScalingMode="HighQuality"
Height="25" />
</StackPanel>
</DataTemplate>
</pu:WindowXCaption.HeaderTemplate>
<pu:WindowXCaption.ExtendControl>
<StackPanel Orientation="Horizontal">
<Button Width="40"
Height="35"
FontSize="18"
Background="Transparent"
pu:ButtonHelper.HoverBackground="#CCCCCC"
pu:ButtonHelper.HoverForeground="#FFFFFF"
VerticalAlignment="Top"
FontFamily="{StaticResource PanuonIconFont}"
Content="" />
<pu:DropDown Width="40"
Height="35"
VerticalAlignment="Top"
pu:ShadowHelper.BlurRadius="10"
pu:ShadowHelper.ShadowDepth="3"
pu:DropDownHelper.Placement="BottomLeft"
pu:DropDownHelper.CornerRadius="5,1,5,5"
pu:DropDownHelper.ClipDockSideShadow="False"
StaysOpen="False">
<pu:DropDown.Content>
<ToggleButton Background="Transparent"
pu:ToggleButtonHelper.HoverBackground="#CCCCCC"
pu:ToggleButtonHelper.HoverForeground="#FFFFFF"
pu:ToggleButtonHelper.CheckedBackground="#CCCCCC"
pu:ToggleButtonHelper.CheckedForeground="#FFFFFF"
IsChecked="{Binding IsOpen, RelativeSource={RelativeSource AncestorType=pu:DropDown}}"
Content=""
FontSize="18"
FontFamily="{StaticResource PanuonIconFont}" />
</pu:DropDown.Content>
<StackPanel Height="150"
Width="120">
</StackPanel>
</pu:DropDown>
</StackPanel>
</pu:WindowXCaption.ExtendControl>
<Grid>
</Grid>
</pu:WindowX>
<pu:WindowX x:Class="WpfApplication.FooView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
mc:Ignorable="d"
Title="FooView"
Height="350"
Width="500"
Background="#1E1E1E"
Foreground="#FFFFFF"
BorderBrush="#2E2E2E"
BorderThickness="1"
pu:WindowXCaption.BorderBrush="#3E3E3E"
pu:WindowXCaption.BorderThickness="0,0,0,1"
pu:WindowXCaption.HeaderAlignment="Center"
pu:WindowXCaption.Background="#2A2A2A"
pu:WindowXCaption.ShadowColor="#7E8E8E"
pu:ShadowHelper.BlurRadius="15"
pu:ShadowHelper.ShadowDepth="2">
<pu:WindowXCaption.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title, RelativeSource={RelativeSource AncestorType=pu:WindowX}}"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</DataTemplate>
</pu:WindowXCaption.HeaderTemplate>
<pu:WindowXCaption.MinimizeButtonStyle>
<Style TargetType="Button"
BasedOn="{StaticResource {x:Static pu:WindowXCaption.MinimizeButtonStyle}}">
<Setter Property="FontSize"
Value="14" />
<Setter Property="pu:ButtonHelper.HoverBackground"
Value="{x:Null}" />
<Setter Property="pu:ButtonHelper.HoverForeground"
Value="#AAAAAA" />
</Style>
</pu:WindowXCaption.MinimizeButtonStyle>
<pu:WindowXCaption.MaximizeButtonStyle>
<Style TargetType="Button"
BasedOn="{StaticResource {x:Static pu:WindowXCaption.MaximizeButtonStyle}}">
<Setter Property="FontSize"
Value="14" />
<Setter Property="pu:ButtonHelper.HoverBackground"
Value="{x:Null}" />
<Setter Property="pu:ButtonHelper.HoverForeground"
Value="#AAAAAA" />
</Style>
</pu:WindowXCaption.MaximizeButtonStyle>
<pu:WindowXCaption.CloseButtonStyle>
<Style TargetType="Button"
BasedOn="{StaticResource {x:Static pu:WindowXCaption.CloseButtonStyle}}">
<Setter Property="FontSize"
Value="14" />
<Setter Property="pu:ButtonHelper.HoverBackground"
Value="{x:Null}" />
<Setter Property="pu:ButtonHelper.HoverForeground"
Value="#FF4C4C" />
</Style>
</pu:WindowXCaption.CloseButtonStyle>
<Grid>
</Grid>
</pu:WindowX>
<pu:WindowX x:Class="WpfApplication.FooView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pu="clr-namespace:Panuon.WPF.UI;assembly=Panuon.WPF.UI"
xmlns:local="clr-namespace:WpfApplication"
mc:Ignorable="d"
Title="FooView"
Height="250"
Width="400">
<WindowChrome.WindowChrome>
<WindowChrome ResizeBorderThickness="5"
GlassFrameThickness="0"
CornerRadius="25"/>
</WindowChrome.WindowChrome>
<Grid>
</Grid>
</pu:WindowX>