WPF全屏

合集下载

把窗口全屏的方法

把窗口全屏的方法

把窗口全屏的方法将窗口全屏的方法可以通过多种途径实现,根据不同操作系统和应用程序的差异,这里将从不同的角度来阐述。

一、操作系统的全屏设置:1. Windows系统:在Windows系统下,将窗口全屏可以通过按下键盘上的F11键实现,或者通过按住Alt键并同时按下Enter键,即可全屏当前窗口。

此外,还可以右击任务栏上最大化按钮,并选择“全屏”选项,将窗口全屏显示。

2. macOS系统:在macOS系统下,使用快捷键“Command + Control + F”可以将窗口全屏显示。

也可以通过单击最大化按钮,即红色的X按钮,将窗口全屏。

二、应用程序的全屏设置:1. 浏览器全屏:在绝大多数主流浏览器中,可以通过按下键盘上的F11键或者按住Ctrl键并同时按下“+”键来实现窗口全屏。

在全屏模式下,浏览器会自动隐藏菜单栏、工具栏和标签栏,以最大程度地扩大浏览区域。

2. 视频播放器全屏:在大多数视频播放器中,都会提供全屏播放的选项,可以在播放界面上找到类似于方形箭头的图标,点击即可将视频窗口全屏显示。

同时,还可以使用快捷键“F”实现播放器全屏。

3. 图形软件全屏:许多图形软件,如PPT、Photoshop等,也提供了全屏显示的功能。

可以在工具栏或者菜单栏中找到类似于最大化按钮的图标,点击即可将窗口全屏显示。

三、其他常见应用的全屏设置:1. Office文档全屏:在Microsoft Office套件中,可以将Word、Excel、PowerPoint等文档进行全屏显示。

具体方法是在菜单栏中选择“视图”,然后点击“全屏”选项,文档即可全屏显示。

同时,还可以使用快捷键“Ctrl + F10”来实现全屏显示。

2. 游戏全屏:在大多数游戏中,可以在游戏菜单中找到全屏设置选项,通过勾选或取消勾选来实现窗口全屏或非全屏的切换。

有些游戏还提供了快捷键“Alt + Enter”来切换全屏模式。

3. 虚拟机全屏:在使用虚拟机软件时,可以将虚拟机窗口全屏以获得更好的显示效果。

WPF中窗体最大化问题的解决方法

WPF中窗体最大化问题的解决方法

WPF中窗体最⼤化问题的解决⽅法前⾔在创建WPF应⽤的时候,你第⼀个看到的就是窗体类。

它作为窗体的基础,提供标准的边框、⼯具条、最⼤化、最⼩化和关闭按钮。

WPF窗体是XAML⽂件和后台代码⽂件的混合体。

本⽂将详细介绍关于WPF窗体最⼤化问题的相关内容,下⾯话不多说了,来⼀起看看详细的介绍吧遇到的问题信息问题:当WindowStyle=None时,窗⼝最⼤化,不显⽰任务栏 —— 即窗体是全屏效果。

解决中遇到的问题列表【主要涉及到任务栏发⽣改变后的⼀些问题处理】:最⼤化时,任务栏被遮盖;最⼤化后,拖动任务栏,⽆法⾃适应窗体;最⼤化后,拖动任务栏,窗体还原,还原数据丢失,始终显⽰最⼤;最⼤化后,拖动任务栏,窗体还原,设置之前保存的窗体位置数据,再次设置,由于和之前⼀样,窗体位置信息不⽣效;解决⽅案思路:窗体最⼤化时,将窗体透明化,设置内部元素Grid的Margin属性,从⽽显⽰出任务栏步骤:1、设置窗体相关属性:WindowStyle="None" AllowsTransparency="True" Background="Transparent" ResizeMode="CanMinimize"窗体需要⽀持透明,并将窗体设置为透明;设置ResizeMode,否则最⼤化时,边框会有影响。

2、添加窗体最⼤化/还原代码如下:double normaltop;double normalleft;double normalwidth;double normalheight;/// <summary>/// 最⼤化/还原处理/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Btn_maximize_Click(object sender, RoutedEventArgs e){//wpf最⼤化全屏显⽰任务栏处理if (this.WindowState == WindowState.Normal){normaltop = this.Top;normalleft = this.Left;normalwidth = this.Width;normalheight = this.Height;double top = SystemParameters.WorkArea.Top;double left = SystemParameters.WorkArea.Left;double right = SystemParameters.PrimaryScreenWidth - SystemParameters.WorkArea.Right;double bottom = SystemParameters.PrimaryScreenHeight - SystemParameters.WorkArea.Bottom;gd_main.Margin = new Thickness(left, top, right, bottom);this.WindowState = WindowState.Maximized;}else{this.WindowState = WindowState.Normal;//必须先设置为0,在重新设值,若前后值⼀样,会失效 --拖动任务栏后,还原-始终显⽰在屏幕最左上⽅this.Top = 0;this.Left = 0;this.Width = 0;this.Height = 0;this.Top = normaltop;this.Left = normalleft;this.Width = normalwidth;this.Height = normalheight;gd_main.Margin = new Thickness(0);}}3、添加任务栏变化处理注意:此节实现仅适⽤于.Net Framework 4.5及以上。

WPF 程序最大化,窗口,最小化

WPF 程序最大化,窗口,最小化

WPF 程序最大化,窗口,最小化public static void FullOrMin(this Window window){//如果是全屏,则最小化if (window.WindowState == WindowState.Maximized){window.Topmost = false;window.WindowState = WindowState.Normal;window.WindowStyle = WindowStyle.SingleBorderWindow;window.ResizeMode = ResizeMode.CanResizeWithGrip;//设置为可调整窗体大小window.Width = 800;window.Height = 600;//获取窗口句柄var handle = new WindowInteropHelper(window).Handle;//获取当前显示器屏幕Screen screen = Screen.FromHandle(handle);window.Left = (screen.Bounds.Width - window.Width) / 2;window.Top = (screen.Bounds.Height - window.Height) / 2;window.WindowState = WindowState.Minimized;return;}//如果是窗口,则全屏if (window.WindowState == WindowState.Normal){//变成无边窗体window.WindowState = WindowState.Normal;//假如已经是Maximized,就不能进入全屏,所以这里先调整状态window.WindowStyle = WindowStyle.None;window.ResizeMode = ResizeMode.NoResize;window.Topmost = true;//最大化后总是在最上面//获取窗口句柄var handle = new WindowInteropHelper(window).Handle;//获取当前显示器屏幕Screen screen = Screen.FromHandle(handle);//调整窗口最大化,全屏的关键代码就是下面3句window.MaxWidth = screen.Bounds.Width;window.MaxHeight = screen.Bounds.Height;window.WindowState = WindowState.Maximized;//解决切换应用程序的问题window.Activated += new EventHandler(window_Activated);window.Deactivated += new EventHandler(window_Deactivated);}}static void window_Deactivated(object sender, EventArgs e){var window = sender as Window;window.Topmost = false;}static void window_Activated(object sender, EventArgs e){var window = sender as Window;window.Topmost = true;}按需求,如果需要全屏后再还原窗口的话,就再全屏前记录窗口的属性最小化后窗口也是一样,在最小化前记录窗口的属性,我这里直接给赋值了,。

wpf 命令参数

wpf 命令参数

wpf 命令参数WPF命令参数是Windows Presentation Foundation(WPF)中一种非常重要的概念,它为开发人员提供了一种处理用户界面元素的交互操作的方式。

通过使用命令参数,开发人员可以轻松地实现用户界面元素的事件处理,而无需编写大量的代码。

在WPF中,命令参数通常用于处理用户界面元素的点击事件,例如按钮的点击、菜单项的点击等。

通过为命令参数指定不同的值,开发人员可以在事件处理程序中根据不同的情况执行不同的操作。

使用WPF命令参数的第一步是定义命令参数。

在WPF中,可以使用RoutedCommand类来定义命令参数。

RoutedCommand类是一个抽象类,开发人员可以通过继承该类来定义自己的命令参数。

在定义命令参数时,通常需要指定命令名称、命令的执行逻辑以及命令的快捷键等信息。

定义完命令参数后,就可以将命令参数应用到用户界面元素上了。

在WPF中,可以使用Command属性将命令参数应用到按钮、菜单项等用户界面元素上。

通过将命令参数应用到用户界面元素上,当用户点击该元素时,命令参数所指定的事件处理程序将会被执行。

在事件处理程序中,可以通过CommandParameter属性来获取命令参数的值。

通过获取命令参数的值,开发人员可以根据不同的情况执行不同的操作。

例如,可以根据命令参数的值来判断用户点击了哪个按钮,从而执行相应的操作。

除了使用RoutedCommand类来定义命令参数外,开发人员还可以使用自定义类来定义命令参数。

自定义类需要实现ICommand 接口,并在Execute方法和CanExecute方法中实现命令的执行逻辑和是否可执行的判断逻辑。

使用WPF命令参数的好处是可以将界面逻辑与业务逻辑进行解耦。

通过使用命令参数,开发人员可以将用户界面元素的事件处理逻辑与业务逻辑分离开来,使代码结构更加清晰,易于维护和扩展。

总结来说,WPF命令参数是一种用于处理用户界面元素的交互操作的机制。

WPF窗口最大化、最小化和关闭按钮功能的禁用

WPF窗口最大化、最小化和关闭按钮功能的禁用

WPF窗⼝最⼤化、最⼩化和关闭按钮功能的禁⽤ResizeMode
表⽰获取或设置调整⼤⼩模式,他有4个参数
成员说明
参数1 NoResize 不同调整窗⼝的⼤⼩,最⼤化和最⼩化按钮不显⽰,不显⽰在标题栏中
参数2 CanResize 可以调整窗⼝的⼤⼩,最⼤化和最⼩化按钮都显⽰并启动
参数3 CanMinimize ⼀个窗⼝仅可以最⼩化和还原,最⼩化和最⼤化按钮显⽰,但只有最⼩化按钮是可⽤的
参数4 CanResizeWithGrip 可以调整窗⼝的⼤⼩,最⼤化、最⼤化按钮都显⽰并启动,⼤⼩调整⼿柄将显⽰到窗⼝的右下⾓参数1
this.ResizeMode = ResizeMode.NoResize;
1
说明:不同调整窗⼝的⼤⼩,最⼤化和最⼩化按钮不显⽰,不显⽰在标题栏中
参数2
this.ResizeMode = ResizeMode.CanResize;
1
说明:可以调整窗⼝的⼤⼩,最⼤化和最⼩化按钮都显⽰并启动
参数3
this.ResizeMode = ResizeMode.CanMinimize;
1
说明:⼀个窗⼝仅可以最⼩化和还原,最⼩化和最⼤化按钮显⽰,但只有最⼩化按钮是可⽤的
参数4
this.ResizeMode = ResizeMode.CanResizeWithGrip;
1
说明:可以调整窗⼝的⼤⼩,最⼤化、最⼤化按钮都显⽰并启动,⼤⼩调整⼿柄将显⽰到窗⼝的右下⾓。

基于WPF的桌面应用程序设计与实现

基于WPF的桌面应用程序设计与实现

基于WPF的桌面应用程序设计与实现Windows Presentation Foundation(WPF)是一种用于创建Windows桌面应用程序的UI框架,它提供了丰富的图形、动画和数据绑定功能,使开发人员能够轻松构建现代化、交互式的用户界面。

本文将介绍基于WPF的桌面应用程序设计与实现过程,包括界面布局、控件使用、数据绑定、MVVM架构等方面的内容。

1. WPF桌面应用程序概述WPF是微软推出的一种基于.NET Framework的UI框架,它使用XAML(Extensible Application Markup Language)来定义用户界面,同时支持C#、等编程语言。

相比传统的Windows Forms,WPF具有更强大的图形渲染能力和更灵活的布局方式,能够创建更加吸引人的用户界面。

2. 界面布局在WPF中,界面布局采用XAML语言来描述,通过嵌套各种布局容器和控件来实现。

常用的布局容器包括Grid(网格布局)、StackPanel(堆栈布局)、WrapPanel(流式布局)等,它们可以相互嵌套组合,灵活地实现各种界面布局效果。

示例代码star:编程语言:xaml<Grid><StackPanel Orientation="Vertical"><TextBlock Text="Hello, WPF!" /><Button Content="Click Me" /></StackPanel></Grid>示例代码end上述代码演示了一个简单的界面布局,包含一个文本块和一个按钮,其中StackPanel用于垂直排列这两个控件。

3. 控件使用WPF提供了丰富多样的控件供开发人员使用,包括文本框、按钮、标签、列表框、下拉框等常见控件,同时也支持自定义控件的开发。

WPF下面视频播放器

WPF下面视频播放器

public ICommand SetFullScreenCommand { get; set; }//全屏命令public void SetFullScreen(object param)//全屏方法{if (MediaElement != null){_Rewinding = false;_Forwarding = false;_InrementalValue = 3;//初始化状态var content = Application.Current.Host.Content;//设置屏幕为全屏模式content.IsFullScreen = true;//将VideoBrush的内容设置为MediaElement视频内容VideoBrush objVideoBrush = new VideoBrush();objVideoBrush.SetSource(MyMediaElement);objVideoBrush.Stretch = Stretch.UniformToFill; //调整笔刷大小//在全屏模式下时需要一个Grid作为一个参数传入,//设置其背景内容为VideoBrush面板。

Grid objGrid = (Grid)param; //获取Grid面板参数objGrid.Visibility = Visibility.Visible; //显示GridobjGrid.Background = objVideoBrush; //设置其背景为VideoBrush}}private bool CanSetFullScreen(object param){var content = Application.Current.Host.Content; //仅在非全屏状态时才允许全屏return (!content.IsFullScreen);}界面布局部分就参考了一位网友的,感觉还不错就没改动。

wpf常用控件和使用方式

wpf常用控件和使用方式

文章标题:WPF常用控件和使用方式导言: WPF(Windows Presentation Foundation)是微软开发的一种用于创建Windows桌面应用程序的技术框架。

它提供了一套强大而灵活的控件库,使开发者能够构建现代、交互式的用户界面。

本文将深入探讨WPF常用控件及其使用方式,帮助读者对WPF控件有更全面、深刻和灵活的理解。

一、Button 控件 Button(按钮)是WPF中最常用的控件之一,用于触发用户交互操作。

它具有多种样式和自定义选项,使开发者能够创建各种不同外观和行为的按钮。

在本部分,我们将重点介绍Button控件的几个重要属性、样式和事件。

1.1 属性 - Content:按钮显示的文本或图像。

- Command:定义一个命令,按钮将执行该命令。

- IsEnabled:指示按钮是否可用。

- CommandParameter:命令的参数。

- Background:按钮的背景色。

- Foreground:按钮的前景色。

1.2 样式 WPF提供了多种样式来美化按钮的外观,同时也支持开发者自定义按钮样式。

在本节,我们将介绍几个常用的按钮样式,如默认样式、悬浮样式和按下样式,并提供样式代码示例。

1.3 事件按钮可以响应多种事件,如Click事件、MouseEnter事件和MouseLeave 事件。

开发者可以通过这些事件实现按钮的行为控制和交互操作。

我们将演示如何使用这些事件来处理用户操作。

二、TextBox 控件 TextBox(文本框)是用于输入和编辑文本的常用控件。

它提供了多种属性和事件,使开发者能够对文本输入进行控制和验证。

在本节,我们将重点介绍TextBox控件的几个关键属性、样式和事件。

2.1 属性 - Text:文本框的内容。

- IsReadOnly:指示文本框是否只读。

- MaxLength:限制文本框输入的最大长度。

- AcceptsReturn:指示文本框是否接受回车符。

WPF界面布局与控件PPT课件

WPF界面布局与控件PPT课件
5.ColumnSpan属性
使子元素跨多列。例如Grid.ColumnRowSpan=“2”表示 跨2列。
1.4.StackPanel (堆叠面板)
• 堆叠面板也叫栈面板,可以将元素排列成一行或者一列。没 有重叠的时候称为排列,有重叠的时候称为堆叠。常用属性 为Orientation属性,表示排列或堆叠的方向,默认为 Ve r t i c a l ( 纵 向 ) , 如 果 希 望 横 向 排 列 则 需 要 设 置 为 “Horizontal”即可。
3.ClipToBounds属性
当绘制内容超出Canvas界限时,设置为true表示超出的部 分被自动剪裁掉,false表示不剪裁。
【例2-1】新建一个“Csharp_2_Canvas”WPF应用程 序项目,在画布上放置两个文本框。其运行结果如图2-3 所示。
图1 程序运行结果
操作步骤 (1)新建一个“Csharp_2_Canvas”WPF应用程序项
2.1.TextBox(文本框)
•TextBox(文本框)控件用于显示或编辑纯文本字符。 常用属性如下: (1)Text:表示显示的文本。 (2)MaxLength:用于指示文本框中输入的最大字符 数。 ( 3 ) Te x t W r a p p i n g : 控 制 是 否 自 动 转 到 下 一 行 。 当 其值为“Wrap”时,该控件可以自动扩展以容纳多行 文本。 (4)BorderBrush:设置边框颜色。 (5)BorderThickness:设置边框宽度,如果不希望 该控件显示边框,可以将其设置为0即可。 Te x t B o x 控 件 的 常 用 事 件 是 Te x t C h a n g e d 事 件 。
• 在实际应用中,一般先用Grid将整个界面划分为需要的行和 列,然后将StackPanel放在某个单元格内,再对 StackPanel内的多个子控件进行排列或堆叠。

WPF漂亮的现代化控件新ModernWPF界面库

WPF漂亮的现代化控件新ModernWPF界面库
这是一个在github上完全开源的库有十分漂亮的界面整个都是win10风界面部分和默认uwp相近
WPF漂亮的现代化控件新 ModernWPF界面库
这是一个在 GitHub 上完全开源的库,有十分漂亮的界面,整个都是 Win10 风,界面部分和默认 UWP 相近
这个库支持了 .NET Framework 4.5 和以上的版本,以及 .NET Core 3.0 和以上的版本,可以在 Windows Vista SP2 和以上的系统运行
界面如下
使用方法简单,从 NuGet 上安装 ModernWpfUI 库,然后打开 App.xaml 添加下面代码
<Application ... xmlns:ui="/2019"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ui:ThemeResources /> <ui:XamlControlsResources /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
</Application>
更多请到 GitHub 的仓库:
Hale Waihona Puke

WPF入门教程系列

WPF入门教程系列

WPF入门教程系列在这个WPF入门教程系列中,我们将探索WPF的基础知识,并通过一些简单的示例来演示如何创建一个基本的WPF应用程序。

1. 了解XAML(eXtensible Application Markup Language)2.创建一个简单的WPF应用程序3.管理用户界面元素在这个教程中,我们将学习如何管理用户界面元素,包括如何设置元素的属性、如何响应用户的操作以及如何使用命令来处理事件。

4.使用数据绑定数据绑定是WPF中一个重要的概念,它可以将数据源与用户界面元素进行连接,使得数据的变化可以自动反映在界面上。

在这个教程中,我们将学习如何使用数据绑定来将数据源与界面元素进行关联。

5.用样式和模板自定义界面样式和模板是WPF中用于自定义用户界面外观的重要特性。

在这个教程中,我们将学习如何创建和应用样式和模板,来改变界面元素的外观。

6.创建自定义的用户界面控件在这个教程中,我们将学习如何创建自定义的用户界面控件,以满足特定的应用程序需求。

我们将了解如何定义控件的外观和行为,并将其添加到我们的应用程序中。

7.使用动画和转换动画和转换是WPF中用于创建生动和交互式用户界面的重要特性。

在这个教程中,我们将学习如何使用动画和转换来改变界面元素的位置、大小、颜色等属性。

8.处理多媒体和图形WPF具有强大的图形和多媒体处理能力,可以用于创建各种各样的视觉效果和交互体验。

在这个教程中,我们将学习如何在WPF应用程序中使用多媒体和图形。

这个WPF入门教程系列将为你提供一个全面的了解WPF的基础知识,并通过实际的示例来演示如何创建一个基本的WPF应用程序。

希望它能帮助你入门WPF,并为你在使用WPF开发应用程序时提供指导。

WPF界面布局DockPanelstackPanelWrapPanel元素内容以及位置控制

WPF界面布局DockPanelstackPanelWrapPanel元素内容以及位置控制

WPF界面布局DockPanelstackPanelWrapPanel元素内容以及位置控制WPF(Windows Presentation Foundation)提供了一些常用的布局容器控件,如DockPanel、StackPanel和WrapPanel,用于控制元素的布局和位置。

下面将详细介绍这些容器控件及其使用。

1. DockPanel(停靠面板):DockPanel是一个可以将元素停靠在容器四个方向的面板容器,可以通过设置元素的Dock属性将其停靠在容器的上、下、左、右四个方向中的一个。

DockPanel默认将元素停靠在左侧。

使用方式:```xml<DockPanel><Button Content="Button 1" DockPanel.Dock="Top"/><Button Content="Button 2" DockPanel.Dock="Left"/><Button Content="Button 3" DockPanel.Dock="Right"/><Button Content="Button 4" DockPanel.Dock="Bottom"/><Button Content="Button 5"/></DockPanel>```上面的XAML代码将创建一个DockPanel,并将五个Button元素停靠在Top、Left、Right、Bottom和默认位置(Center)。

2. StackPanel(堆栈面板):StackPanel是一种线性布局容器,在水平/垂直方向上依次排列元素。

元素可以根据需要自动换行。

wpf开发操作技巧

wpf开发操作技巧

wpf开发操作技巧WPF (Windows Presentation Foundation) 是一种用于创建Windows 应用程序的框架,它提供了丰富的功能和灵活性。

在WPF 开发过程中,有一些操作技巧可以帮助提高开发效率和代码质量。

1. MVVM 设计模式:使用MVVM (Model-View-ViewModel) 设计模式可以帮助你更好地组织和管理你的WPF 应用程序。

MVVM 将应用程序分为三个主要部分:Model(数据模型),View(用户界面)和ViewModel(视图模型)。

ViewModel 充当View 和Model 之间的中间层,负责处理数据绑定和交互逻辑。

使用MVVM 可以使代码更易于维护、测试和重用。

2. 数据绑定:WPF 提供了强大的数据绑定机制,可以将数据与用户界面元素进行关联。

使用数据绑定可以使界面与数据保持同步,简化代码,并提高代码的可读性和可维护性。

掌握数据绑定的各种技巧,如单向和双向绑定、属性通知和集合绑定,可以大大提高开发效率。

3. 命令:WPF 中的命令机制可以帮助你将用户界面的操作与后台逻辑进行解耦。

通过使用命令,你可以将按钮、菜单项等用户界面元素的操作与相应的命令对象关联起来,而不是直接在代码中处理点击事件。

这样可以使代码更加清晰、可测试和可扩展。

4. 样式和模板:WPF 中的样式和模板机制可以帮助你自定义控件的外观和行为。

通过定义样式和模板,你可以将一组属性和事件应用于多个控件,从而使它们具有一致的外观和行为。

使用样式和模板可以减少重复的代码,并提高应用程序的可维护性。

5. 资源:WPF 中的资源机制可以帮助你管理和重用应用程序中的各种资源,如样式、模板、图像和字符串。

通过将资源定义在资源字典中,并使用适当的键进行引用,你可以在整个应用程序中共享和重用这些资源。

这样可以提高应用程序的性能,并使代码更具可读性和可维护性。

6. 动画和过渡效果:WPF 提供了丰富的动画和过渡效果,可以为应用程序添加生动和吸引人的用户体验。

WPF全局样式(滚动条)

WPF全局样式(滚动条)

WPF全局样式(滚动条)对整个WPF项⽬进⾏样式修改时,采⽤全局样式的⽅法。

⾸先,建⼀个xaml⽂件为存放样式的资源⽂件。

写⼊想修改的控件样式,以滚动条样式为例。

1 <ResourceDictionary xmlns="/winfx/2006/xaml/presentation"2 xmlns:x="/winfx/2006/xaml"3 xmlns:sys="clr-namespace:System;assembly=mscorlib">4 <!-- ScrollViewer 滚动条 -->5 <Style x:Key="ScrollBarThumb" TargetType="{x:Type Thumb}">6 <Setter Property="OverridesDefaultStyle" Value="true"/>7 <Setter Property="IsTabStop" Value="false"/>8 <Setter Property="Template">9 <Setter.Value>10 <ControlTemplate TargetType="{x:Type Thumb}">11 <Grid>12 <!--滚动条颜⾊-->13 <Border Background="#646465" CornerRadius="3"/>14 </Grid>15 </ControlTemplate>16 </Setter.Value>17 </Setter>18 </Style>19 <Style x:Key="HorizontalScrollBarPageButton" TargetType="{x:Type RepeatButton}">20 <Setter Property="OverridesDefaultStyle" Value="true"/>21 <Setter Property="Background" Value="Transparent"/>22 <Setter Property="Focusable" Value="false"/>23 <Setter Property="IsTabStop" Value="false"/>24 <Setter Property="Opacity" Value="0.2"/>25 <Setter Property="Template">26 <Setter.Value>27 <ControlTemplate TargetType="{x:Type RepeatButton}">28 <Rectangle Fill="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>29 </ControlTemplate>30 </Setter.Value>31 </Setter>32 </Style>33 <Style x:Key="VerticalScrollBarPageButton" TargetType="{x:Type RepeatButton}">34 <Setter Property="OverridesDefaultStyle" Value="true"/>35 <Setter Property="Background" Value="Transparent"/>36 <Setter Property="Focusable" Value="false"/>37 <Setter Property="IsTabStop" Value="false"/>38 <Setter Property="Opacity" Value="0.2"/>39 <Setter Property="Template">40 <Setter.Value>41 <ControlTemplate TargetType="{x:Type RepeatButton}">42 <Rectangle Fill="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"/>43 </ControlTemplate>44 </Setter.Value>45 </Setter>46 </Style>4748 <!--滚动条上下按钮-->49 <Style x:Key="VerticalScrollBarPageButton2" TargetType="{x:Type RepeatButton}">50 <Setter Property="OverridesDefaultStyle" Value="true"/>51 <Setter Property="Background" Value="Transparent"/>52 <Setter Property="Focusable" Value="false"/>53 <Setter Property="IsTabStop" Value="false"/>54 <Setter Property="Opacity" Value="0"/>55 <Setter Property="Template">56 <Setter.Value>57 <ControlTemplate TargetType="{x:Type RepeatButton}">58 <Rectangle Fill="#90000000" Width="0" Height="0"/>59 </ControlTemplate>60 </Setter.Value>61 </Setter>62 </Style>63 <Style x:Key="for_scrollbar" TargetType="{x:Type ScrollBar}">64 <Setter Property="Stylus.IsPressAndHoldEnabled" Value="false"/>65 <Setter Property="Stylus.IsFlicksEnabled" Value="false"/>66 <Setter Property="Background" Value="Transparent"/>67 <Setter Property="Margin" Value="0,1,1,6"/>68 <Setter Property="Width" Value="10"/>69 <Setter Property="MinWidth" Value="5"/>70 <Setter Property="Opacity" Value="0.2"/>71 <Setter Property="Template">72 <Setter.Value>73 <ControlTemplate TargetType="{x:Type ScrollBar}">74 <Grid x:Name="Bg" SnapsToDevicePixels="true">75 <Grid.RowDefinitions>76 <RowDefinition Height="auto"></RowDefinition>77 <RowDefinition Height="*"></RowDefinition>78 <RowDefinition Height="auto"></RowDefinition>79 </Grid.RowDefinitions>80 <RepeatButton Grid.Row="0" Style="{StaticResource VerticalScrollBarPageButton2}" Command="{x:Static ScrollBar.PageUpCommand}"/>81 <Track x:Name="PART_Track" Grid.Row="1" IsEnabled="{TemplateBinding IsMouseOver}" IsDirectionReversed="true">82 <Track.DecreaseRepeatButton>83 <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}" Command="{x:Static ScrollBar.PageUpCommand}"/>84 </Track.DecreaseRepeatButton>85 <Track.IncreaseRepeatButton>86 <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}" Command="{x:Static ScrollBar.PageDownCommand}"/>87 </Track.IncreaseRepeatButton>88 <Track.Thumb>89 <Thumb Style="{StaticResource ScrollBarThumb}"/>90 </Track.Thumb>91 </Track>92 <RepeatButton Grid.Row="2" Style="{StaticResource VerticalScrollBarPageButton2}" Command="{x:Static ScrollBar.PageDownCommand}"/>93 </Grid>94 </ControlTemplate>95 </Setter.Value>96 </Setter>97 <Style.Triggers>98 <Trigger Property="Orientation" Value="Horizontal">99 <Setter Property="Background" Value="Transparent"/>100 <Setter Property="Margin" Value="1,0,6,1"/>101 <Setter Property="Height" Value="5"/>102 <Setter Property="MinHeight" Value="5"/>103 <Setter Property="Width" Value="Auto"/>104 <Setter Property="Opacity" Value="0.2"/>105 <Setter Property="Template">106 <Setter.Value>107 <ControlTemplate TargetType="{x:Type ScrollBar}">108 <Grid x:Name="Bg" SnapsToDevicePixels="true">109 <Track x:Name="PART_Track" IsEnabled="{TemplateBinding IsMouseOver}">110 <Track.DecreaseRepeatButton>111 <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}" Command="{x:Static ScrollBar.PageLeftCommand}"/>112 </Track.DecreaseRepeatButton>113 <Track.IncreaseRepeatButton>114 <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}" Command="{x:Static ScrollBar.PageRightCommand}"/>115 </Track.IncreaseRepeatButton>116 <Track.Thumb>117 <Thumb Style="{StaticResource ScrollBarThumb}"/>118 </Track.Thumb>119 </Track>120 </Grid>121 </ControlTemplate>122 </Setter.Value>123 </Setter>124 </Trigger>125 </Style.Triggers>126 </Style>127 <Style x:Key="for_scrollviewer"128 TargetType="{x:Type ScrollViewer}">129 <Setter Property="BorderBrush" Value="LightGray"/>130 <Setter Property="BorderThickness" Value="0"/>131 <Setter Property="Template">132 <Setter.Value>133 <ControlTemplate TargetType="{x:Type ScrollViewer}">134 <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">135 <Grid Background="{TemplateBinding Background}">136 <ScrollContentPresenter Cursor="{TemplateBinding Cursor}" Margin="{TemplateBinding Padding}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 137 <ScrollBar x:Name="PART_VerticalScrollBar"138 HorizontalAlignment="Right"139 Maximum="{TemplateBinding ScrollableHeight}"140 Orientation="Vertical"141 Style="{StaticResource for_scrollbar}"142 ViewportSize="{TemplateBinding ViewportHeight}"143 Value="{TemplateBinding VerticalOffset}"144 Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>145 <ScrollBar x:Name="PART_HorizontalScrollBar"146 Maximum="{TemplateBinding ScrollableWidth}"147 Orientation="Horizontal"148 Style="{StaticResource for_scrollbar}"149 VerticalAlignment="Bottom"150 Value="{TemplateBinding HorizontalOffset}"151 ViewportSize="{TemplateBinding ViewportWidth}"152 Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>153 </Grid>154 </Border>155 <ControlTemplate.Triggers>156 <EventTrigger RoutedEvent="ScrollChanged" >157 <BeginStoryboard>158 <Storyboard>159 <DoubleAnimation160 Storyboard.TargetName="PART_VerticalScrollBar"161 Storyboard.TargetProperty="Opacity"162 To="0.8"163 Duration="0:0:1"/>164 <DoubleAnimation165 Storyboard.TargetName="PART_VerticalScrollBar"166 Storyboard.TargetProperty="Opacity"167 To="0.2"168 Duration="0:0:1"169 BeginTime="0:0:1"/>170 <DoubleAnimation171 Storyboard.TargetName="PART_HorizontalScrollBar"172 Storyboard.TargetProperty="Opacity"173 To="0.8"174 Duration="0:0:1"/>175 <DoubleAnimation176 Storyboard.TargetName="PART_HorizontalScrollBar"177 Storyboard.TargetProperty="Opacity"178 To="0.2"179 Duration="0:0:1"180 BeginTime="0:0:1"/>181 </Storyboard>182 </BeginStoryboard>183 </EventTrigger>184 <EventTrigger RoutedEvent="MouseEnter"185 SourceName="PART_VerticalScrollBar">186 <BeginStoryboard>187 <Storyboard>188 <DoubleAnimation189 Storyboard.TargetName="PART_VerticalScrollBar"190 Storyboard.TargetProperty="Opacity"191 To="0.8"192 Duration="0:0:0.7"/>193 </Storyboard>194 </BeginStoryboard>195 </EventTrigger>196 <EventTrigger RoutedEvent="MouseLeave"197 SourceName="PART_VerticalScrollBar">198 <BeginStoryboard>199 <Storyboard>200 <DoubleAnimation201 Storyboard.TargetName="PART_VerticalScrollBar"202 Storyboard.TargetProperty="Opacity"203 To="0.2"204 Duration="0:0:0.7"/>205 </Storyboard>206 </BeginStoryboard>207 </EventTrigger>208 <EventTrigger RoutedEvent="MouseEnter"209 SourceName="PART_HorizontalScrollBar">210 <BeginStoryboard>211 <Storyboard>212 <DoubleAnimation213 Storyboard.TargetName="PART_HorizontalScrollBar"214 Storyboard.TargetProperty="Opacity"215 To="0.8"216 Duration="0:0:0.7"/>217 </Storyboard>218 </BeginStoryboard>219 </EventTrigger>220 <EventTrigger RoutedEvent="MouseLeave"221 SourceName="PART_HorizontalScrollBar">222 <BeginStoryboard>223 <Storyboard>224 <DoubleAnimation225 Storyboard.TargetName="PART_HorizontalScrollBar"226 Storyboard.TargetProperty="Opacity"227 To="0.2"228 Duration="0:0:0.7"/>229 </Storyboard>230 </BeginStoryboard>231 </EventTrigger>232 </ControlTemplate.Triggers>233 </ControlTemplate>234 </Setter.Value>235 </Setter>236 </Style>237238239 </ResourceDictionary>View Code然后,在App.xaml⾥添加对资源⽂件的引⽤,<ResourceDictionary Source="pack://application:,,,/Resource/Scroll.xaml"/>。

wpf 开发技巧

wpf 开发技巧

wpf 开发技巧
WPF(Windows Presentation Foundation)是一种用于开发富客户端应用程序的UI框架,它提供了许多有用的开发技巧,以下是一些常见的WPF开发技巧:
1. 熟练掌握XAML:XAML是WPF中用于定义UI的标记语言,熟练掌握XAML 可以让你更快速地设计和布局界面。

2. 使用数据绑定:数据绑定是WPF中非常强大的功能,它可以让UI元素与数据源进行绑定,从而自动更新UI元素。

3. 使用命令绑定:命令绑定可以将UI元素(如按钮)与代码中的方法进行绑定,从而在用户与UI元素交互时执行代码。

4. 使用样式和模板:样式和模板可以让你的UI看起来更加美观和一致,你可以使用样式来设置UI元素的外观,使用模板来定义UI元素的布局。

5. 使用动画和转换:WPF提供了丰富的动画和转换功能,你可以使用这些功能来创建动态的UI效果。

6. 优化性能:WPF应用程序可能会因为UI元素的数量和复杂性而变得缓慢,你可以使用一些技巧来优化性能,例如使用虚拟化、减少不必要的重绘和重排版等。

7. 调试和诊断:WPF提供了强大的调试和诊断工具,你可以使用这些工具来查找和解决开发中的问题。

8. 利用第三方库:WPF社区提供了许多第三方库,例如MVVM Light、Prism 等,这些库可以提供额外的功能和工具,帮助你更快地开发出更好的应用程序。

WPF实现的UI设计

WPF实现的UI设计

WPF实现的UI设计WPF(Windows Presentation Foundation)是一种用于开发Windows桌面应用程序的技术,它具有灵活性和强大的功能。

通过WPF,开发人员可以创建出色的用户界面设计,提供丰富的图形效果、动画和交互性。

在本文中,我们将讨论WPF实现的UI设计,并探讨如何利用WPF构建优雅、易于使用的用户界面。

在WPF中,UI设计是通过XAML(可扩展应用程序标记语言)来定义和布局的。

XAML是一种基于XML的标记语言,可以用于声明控件、属性和布局。

使用XAML,开发人员可以轻松地创建和设计界面,而无需编写大量的代码。

首先,在WPF中,界面设计的一个重要概念是布局管理器。

布局管理器是一种用于控制界面元素位置和大小的机制。

WPF提供了多种布局管理器,包括栈面板(StackPanel)、网格(Grid)和表格(Table)等。

开发人员可以根据需要选择适当的布局管理器来创建界面布局。

例如,我们可以使用网格布局来创建一个登录界面。

在网格布局中,界面被分为行和列,开发人员可以将控件放置在网格的不同单元格中。

通过指定行和列的大小、对齐方式和间距,可以实现灵活和精确的界面设计。

其次,WPF提供了丰富的图形效果和动画功能,可以增强用户体验。

例如,我们可以使用渐变、阴影和透明度等效果来制作出色的界面视觉效果。

此外,WPF还提供了动画功能,可以为控件添加平移、缩放和旋转等动画效果,使界面更加生动和吸引人。

除了布局、图形效果和控件,WPF还提供了许多其他功能,如数据绑定、命令处理和导航等。

数据绑定是一种将界面元素与数据模型进行关联的机制,可以实现数据的自动更新和反映。

命令处理是一种处理用户操作的机制,可以将用户操作(如按钮点击)与相关的功能代码进行关联。

导航是一种在不同界面之间切换的机制,可以实现复杂的应用程序导航和流程控制。

在设计WPF界面时,还应考虑一些用户体验原则。

首先,界面应设计简洁和直观,避免过多的复杂和混乱。

wpf [required] 的用法

wpf [required] 的用法

一、WPF概述Windows Presentation Foundation(WPF)是一种用于创建Windows应用程序的.NET框架。

它提供了丰富的用户界面、图形和多媒体功能,使开发人员能够创建出色的桌面应用程序。

WPF使用XAML(Extensible Application Markup Language)来定义用户界面,具有灵活、可扩展的特性,使得开发人员可以轻松地创建各种复杂的用户界面和交互效果。

二、WPF的优势1. 灵活的界面设计WPF使用XAML来描述界面,允许开发人员将界面和功能分离。

这种分离可以使设计师和开发人员分工合作,设计师可以专注于界面的外观和交互,而开发人员可以专注于功能的实现。

XAML可以轻松地实现各种界面效果,如动画、转换和触摸交互等。

2. 数据绑定WPF提供了强大的数据绑定功能,可以将界面元素与数据模型相关联。

这样可以实现自动更新界面和数据之间的同步,极大地简化了开发人员的工作。

3. 可重用的控件WPF包含丰富的内置控件,如按钮、文本框、列表框等,开发人员可以轻松地将这些控件组合起来,创建丰富多样的用户界面。

WPF还支持自定义控件和样式,使得开发人员可以创建自己的可重用组件,提高了开发效率。

4. 3D图形和动画WPF支持在界面中使用3D图形和动画,使得开发人员可以实现更加生动、吸引人的用户界面。

这对于需要展示大量图形和动画的应用程序来说,具有非常重要的意义。

5. 跨评台兼容WPF基于.NET框架,具有良好的跨评台兼容性,可以在各种Windows操作系统上运行。

这意味着开发人员可以编写一次代码,然后在不同的Windows设备上运行,极大地简化了开发和维护工作。

三、WPF的基本用法1. 创建WPF应用程序要创建一个WPF应用程序,首先需要在Visual Studio中新建一个WPF项目。

在新建项目对话框中选择WPF Application模板,然后输入项目名称和保存路径,点击确定即可创建一个新的WPF应用程序项目。

基于WPF的桌面应用界面设计与优化

基于WPF的桌面应用界面设计与优化

基于WPF的桌面应用界面设计与优化一、引言随着计算机技术的不断发展,桌面应用程序在日常生活和工作中扮演着越来越重要的角色。

而WPF(Windows Presentation Foundation)作为一种用于创建桌面应用程序的技术,具有强大的界面设计和优化能力,为开发人员提供了丰富的工具和功能。

本文将探讨基于WPF的桌面应用界面设计与优化的相关内容。

二、WPF简介WPF是微软推出的一种基于.NET Framework的用户界面技术,它使用XAML(Extensible Application Markup Language)来定义界面,支持数据绑定、样式、模板等功能,使开发者能够更轻松地创建出富有交互性和吸引力的界面。

WPF采用矢量图形渲染技术,可以实现界面元素的平滑缩放和旋转,同时支持3D图形和动画效果,为桌面应用程序提供了更加灵活和强大的表现能力。

三、界面设计原则1. 简洁性在设计桌面应用界面时,要遵循简洁性原则,避免过多的装饰和冗余信息。

通过合理布局和组织界面元素,使用户能够快速找到他们需要的功能,并减少认知负荷。

2. 一致性保持界面元素的一致性对于用户体验至关重要。

统一字体、颜色、按钮样式等可以提升用户对应用程序的整体印象,并减少学习成本。

3. 可访问性考虑到不同用户群体的需求,要确保界面具有良好的可访问性。

包括合理设置键盘快捷键、支持屏幕阅读器等功能,使得残障用户也能够方便地使用应用程序。

四、界面设计实践1. 使用合适的布局控件WPF提供了多种布局控件,如Grid、StackPanel、WrapPanel等,开发者可以根据实际需求选择合适的布局方式。

合理利用这些布局控件可以使界面更加灵活和美观。

2. 数据绑定与MVVM模式利用WPF强大的数据绑定功能,可以将界面与数据模型进行有效地绑定,实现数据驱动视图更新。

同时采用MVVM(Model-View-ViewModel)模式可以将业务逻辑与界面分离,提高代码的可维护性和可测试性。

WPF界面布局DockPanelstackPanelWrapPanel元素内容以及位置控制

WPF界面布局DockPanelstackPanelWrapPanel元素内容以及位置控制

WPF界⾯布局DockPanelstackPanelWrapPanel元素内容以及位置控制1 DockPanel1)默认充满整个窗⼝。

2)最后⼀个出现的部分,默认充满剩余空间。

3)⾮最后⼀个出现的部分,根据其中内容,进⾏分配空间s2 StackPanel 实现居左,居右,居中利⽤Margin实现<StackPanel DockPanel.Dock="Top" Background="Red" Orientation="Vertical"><TextBlock VerticalAlignment="Center" Margin="0,0,0,-30">Alert</TextBlock><Button Padding="2" Margin="0,0,0,0" HorizontalAlignment="Right" Height="30" Width="56">Click</Button><Button Padding="2" Margin="0,-30,0,0" HorizontalAlignment="Center" Height="30" Width="56">Click</Button></StackPanel>3 位置充分利⽤margin padding alingn 实现相对定位 ,元素外部利⽤布局控件4 位置充分利⽤margin padding alingn 实现相对定位 ,元素外部利⽤布局控件5 元素内容控制⾃动换⾏,滚动条,最⾼⾼度1) 可以利⽤wrap maxHeight maxWidth 最⼤⾼度和内容的限制<TextBlock TextWraping="warp" maxHeight="20">内容</TextBlock>2) 可以利⽤wrap scrolViewer 滚动条最⼤⾼度,内容不限制<scrolViewer MaxHeight="30"><TextBlock TextWraping="warp">内容</TextBlock></scrolViewer>对于元素中的内容不确定的处理利⽤Wrap属性值实现,随窗⼝⾃动伸缩换⾏<TextBlock TextWrapping="Wrap">werwwrrwerwrwrr</TextBlock>3) TextBox内容控制同上。

wpf 手册

wpf 手册

wpf 手册
WPF(Windows Presentation Foundation)是微软推出的一种用于创建Windows桌面应用程序和用户界面的技术。

WPF手册是为了帮助开发者更好地理解和使用WPF而编写的指南和参考。

WPF手册通常会涵盖以下内容:
1. WPF简介:介绍WPF的概念、特点和用途,以及与其它微软技术的关系。

2. XAML语法:详细介绍XAML语言的语法、属性和事件,以及如何使用XAML进行界面设计和布局。

3. 控件介绍:介绍WPF中常用的控件,如按钮、文本框、列表框等,以及它们的属性和用法。

4. 数据绑定:介绍WPF中的数据绑定机制,包括数据源、绑定的方向和更新等。

5. 样式和模板:介绍如何通过样式和模板来定制WPF控件的外观和行为。

6. 动画和过渡:介绍如何在WPF应用程序中创建动画效果和过渡效果。

7. 性能优化:提供一些优化WPF应用程序性能的技巧和建议。

8. 实例代码:提供一些示例代码,以便开发者更好地理解和应用WPF技术。

总之,WPF手册是一个非常有用的资源,可以帮助开发者快速上手并精通WPF技术,从而更高效地开发出高质量的Windows桌面应用程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WPF全屏
全屏代码:
#region设置全屏
this.WindowState = System.Windows.WindowState.Normal;
this.WindowStyle = System.Windows.WindowStyle.None;
this.ResizeMode = System.Windows.ResizeMode.NoResize;
this.Topmost = true;
this.Left = 0.0;
this.Top = 0.0;
this.Width =
System.Windows.SystemParameters.PrimaryScreenWidth;
this.Height =
System.Windows.SystemParameters.PrimaryScreenHeight;
#endregion
扩展类:
项目先引用下面dll:
1:System.Windows.Forms;
2:System.Drawing;
public static class ExpendMethod
{
private static Window _fullWindow;
private static WindowState _windowState;
private static WindowStyle _windowStyle;
private static bool _windowTopMost;
private static ResizeMode _windowResizeMode;
private static Rect _windowRect;
///<summary>
///进入全屏
///</summary>
///<param name="window"></param>
public static void GoFullscreen(this Window window)
{
//已经是全屏
if (window.IsFullscreen()) return;
//存储窗体信息
_windowState = window.WindowState;
_windowStyle = window.WindowStyle;
_windowTopMost = window.Topmost;
_windowResizeMode = window.ResizeMode;
_windowRect.X = window.Left;
_windowRect.Y = window.Top;
_windowRect.Width = window.Width;
_windowRect.Height = window.Height;
//变成无边窗体
window.WindowState = WindowState.Normal;//假如已经是Maximized,就不能进入全屏,所以这里先调整状态
window.WindowStyle = WindowStyle.None;
window.ResizeMode = ResizeMode.NoResize;
window.Topmost = true;//最大化后总是在最上面
//获取窗口句柄
var handle = new WindowInteropHelper(window).Handle;
//获取当前显示器屏幕
Screen screen = Screen.FromHandle(handle);
//调整窗口最大化,全屏的关键代码就是下面3句
window.MaxWidth = screen.Bounds.Width;
window.MaxHeight = screen.Bounds.Height;
window.WindowState = WindowState.Maximized;
//解决切换应用程序的问题
window.Activated += new EventHandler(window_Activated);
window.Deactivated += new EventHandler(window_Deactivated);
//记住成功最大化的窗体
_fullWindow = window;
}
static void window_Deactivated(object sender, EventArgs e)
{
var window = sender as Window;
window.Topmost = false;
}
static void window_Activated(object sender, EventArgs e)
{
var window = sender as Window;
window.Topmost = true;
}
///<summary>
///退出全屏
///</summary>
///<param name="window"></param>
public static void ExitFullscreen(this Window window)
{
//已经不是全屏无操作
if (!window.IsFullscreen()) return;
//恢复窗口先前信息,这样就退出了全屏
window.Topmost = _windowTopMost;
window.WindowStyle = _windowStyle;
window.ResizeMode = ResizeMode.CanResize;//设置为可调整窗体大小 window.Left = _windowRect.Left;
window.Width = _windowRect.Width;
window.Top = _windowRect.Top;
window.Height = _windowRect.Height;
window.WindowState = _windowState;//恢复窗口状态信息
window.ResizeMode = _windowResizeMode;//恢复窗口可调整信息
//移除不需要的事件
window.Activated -= window_Activated;
window.Deactivated -= window_Deactivated;
_fullWindow = null;
}
///<summary>
///窗体是否在全屏状态
///</summary>
///<param name="window"></param>
///<returns></returns>
public static bool IsFullscreen(this Window window) {
if (window == null)
throw new ArgumentNullException("window");
return _fullWindow == window;
}。

相关文档
最新文档