wpf中子窗口的几个问题】的更多相关文章

今天研究了一下wpf中的窗口,写这篇文章来总结一下今天的收获.(转载请注明出处~) 总所周知,窗口是windows系统中十分重要的一个元素(从名字上就能体现出来),而一个应用程序总是包含很多窗口(主窗口.子窗口.对话框). 我们要利用wpf实现一个多窗口的应用. 新建一个wpf项目后,修改xaml如下: <Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/win…
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.很希望能够分享给大家. 本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解.本系列我希望自己也能和他一样坚持下来,每天的进步才能…
WPF自定义窗口基类时,窗口基类只定义.cs文件,xaml文件不定义.继承自定义窗口的类xaml文件的根节点就不再是<Window>,而是自定义窗口类名(若自定义窗口与继承者不在同一个命名空间,还得加上命名空间),继承自定义窗口类后台代码也得修改为继承自自定义窗口exp: //继承Window类的自定义窗口类 namespace WPF_Study.Entity { using System.Windows; public class WindowBase:Window { private c…
今天简单记录一个知识点:WPF自定义窗口基类,常用winform的人知道,winform的窗体继承是很好用的,写一个基础窗体,直接在后台代码改写继承窗体名.但如果是WPF要继承窗体,我个人感觉没有理解之前:好难,不懂怎么处理还是不可以继承:但理解之后就是很简单了. 第一次尝试使用WPF直接修改后台代码继承自定义窗体SEWindow后就会报错如下: 紧接着将前台代码的根标记由<Window></Window>更改为<<local:SEWindow ></loc…
原文 WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程的 UI,大家也会想到使用另一个窗口来实现,让每个窗口拥有自己的 UI 线程.然而,就不能让同一个窗口内部使用多个 UI 线程吗? 阅读本文将收获一份 Win32 函数 SetParent 及相关函数的使用方法. WPF 同一个窗口中跨线程访问 UI 有多种方法: 使用 VisualTarget (…
原文:wpf 自定义窗口,最大化时覆盖任务栏解决方案 相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏.但这样使用 WindowState="Maximized" 或者后台 this.WindowState = System.Windows.WindowState.Maximized; 最大化窗口会覆盖掉系统任务栏,即全屏了.这其实并不是个很好的体验. 在网上找答案,排名靠前的都是提供用hook钩子,篇幅…
原文:WPF自定义窗口最大化显示任务栏 当我们要自定义WPF窗口样式时,通常是采用设计窗口的属性 WindowStyle="None" ,然后为窗口自定义放大,缩小,关闭按钮的样式. 然而这样的话,当通过代码设置窗口(代码如下)放大时,窗口会把任务栏给遮档住. private void Max_Click(object sender, RoutedEventArgs e) { if (this.WindowState != WindowState.Maximized) { this.W…
WPF将窗口置于桌面下方(可用于动态桌面) 先来看一下效果: 界面元素很简单,就一个Button按钮,然后写个定时器,定时更新Button按钮中的内容为当前时间,下面来介绍下原理,和界面组成. 窗口介绍 Windows操作系统所有的地方都是窗口,可能这也是系统名字的由来吧,包括你看到的文件夹,桌面,右键菜单,这些都是由界面组成的, 这么多窗口需要有一个合理的显示,就需要用到我们的层级关系,比如两个窗体谁显示在前,谁显示在后. VS给我们提供了一个查找和查看窗口信息的工具,叫做Spy++,在工具里…
在WPF中,经常需要对窗口进行设置,下面讲讲常用的几个设置. 1.无边框窗口 WindowStyle="None" 窗口样式无 AllowsTransparency="True" Background="Transparent" 背景透明 可以用Border的CornerRadius设置窗口四周圆角 设置窗口阴影--值得一提的是,如果直接用Window.Effect,效果会影响CornerRadius设置的圆角效果. <Window.Eff…
0. 一些常用尺寸大小: 1920x1080; 1600x900; 1280x720; 1024x576; 1. 设置窗口的边框样式 使用 Window.WindowStyle 属性可以设置窗口的边框样式, 属性值是 WindowStyle 枚举值之一,包括: None     仅工作区可见,不显示标题栏和边框. WindowStyle 为 None 的 NavigationWindow 将仍然显示导航user interface (UI).    SingleBorderWindow    …
相信很多人使用wpf时会选择自定义美观的窗口,因此会设置WindowStyle="None" 取消自带的标题栏.但这样使用 WindowState="Maximized" 或者后台 this.WindowState = System.Windows.WindowState.Maximized; 最大化窗口会覆盖掉系统任务栏,即全屏了.这其实并不是个很好的体验. 在网上找答案,排名靠前的都是提供用hook钩子,篇幅很长,如:http://www.cnblogs.com…
在WPF中设计登录窗口关闭时打开主窗口,自动生成的App.xaml不能满足要求, 1.把App.xaml的属性窗口中的生成操作设定为 无 2.添加Program类 static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { LoginWindow loginForm = new Lo…
原版是从网上找了一位大神的,自己只是用了一点适合自己的. 具体实现 1.首先已经确认WPF中没有实现最小化托盘的类与方法,用到了winform中的程序集 using Drawing = System.Drawing;using Forms = System.Windows.Forms; 2.XAML的后代相应事件的Demo,只是为了看起来方便~!其中也包含了在任务栏中不现实图标,只在托盘中显示.双击实现窗口的还原.没用到大神写的,自己琢磨了个,令人想不到的蛋疼的后果还没出现,也就暂时这样了. n…
在WPF中,我们的常常涉及到多个窗口之间传递参数的问题,那么该怎么传呢? 答:在窗口的构造函数中添加想要传递的参数.(我表达不好,请看下面代码.) 在主窗口中单机button打开一个新的子窗口. //主窗口类部分如下: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEve…
1.建一个WPF资源词典,在其中定义窗口样式,并在App.xaml中指定其为程序资源 2.写一个继续自windows的类,并指定这个类的Style为第一步资源里的样式 3.新建窗口时,分别把xaml文件和cs文件中的windows替换成第二步自定义的类 源码下载 http://files.cnblogs.com/Laro/TeryWindows.rar…
在WinForm中,我们要跨线程访问窗口控件,只需要设置属性CheckForIllegalCrossThreadCalls = false;即可. 在WPF中要麻烦一下,同样的不允许跨线程访问,因为没有权限,访问了会抛异常: 没有CheckForIllegalCrossThreadCalls 属性,怎么办? 在WPF中的窗口控件都有一个Dispatcher属性,允许访问控件的线程:既然不允许直接访问,就告诉控件我们要干什么就好了. 方法如下: private delegate void outp…
原文:通过WinForm控件创建的WPF 控件无法输入的问题 今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子后,终于找到了原因:虽然这个程序是个WPF程序,但为了复用之前的部分代码,使用着一个WinForm的菜单控件,后续的子窗口都是通过这个WinForm菜单创建的.而用WinForm控件创建的WPF控件可能出现无法正确响应键盘事件的情况. 找…
WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程的 UI,大家也会想到使用另一个窗口来实现,让每个窗口拥有自己的 UI 线程.然而,就不能让同一个窗口内部使用多个 UI 线程吗? 答案其实是——可以的!使用 VisualTarget 即可. 阅读本文将收获一份对 VisualTarget 的解读以及一份我封装好的跨线程 UI 控件 DispatcherContainer.cs. 几个必备的组件 微软给 VisualTarget 提供的注…
又到了写点东西的时候,因为有了新的收获,所以用随笔来记录下自己的成长.话不多说,正入主题. 最近又遇到一个新的需求,有一组控件,需要悬浮显示在面板的边缘上,刚开始的时候,是不显示的,点击后显示,然后再次点击,隐藏.就这么一个功能,折腾了一天. 实现的方法很多,本次使用了DevExpress里面的DockLayoutManager控件.从DevExpress的官网上下载了一个Demo,然后学习了下.DevExpress的控件使用,搜索资料好像不多,当然也可能是我的搜索方法不对. <Window x…
关于子窗体的层级关系总结一下哈,希望能对大家有些帮助 假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow 1,如果弹出窗体(比如SubWindow)仅仅是调用Show方法,并且没有设置其Owner属性: ClassRootWindow {         void Foo()         {                    SubWindow sw = newSubWindow();                 …
有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName"]: 2) 第二个就是 在目标窗体上面公开个 属性,直接赋值: 3) 最后就是在Uri里面传参数 NavigationService.Navigate(window object,argument value) 4) 采用事件响应,传递值. 以下以实例具体说明事件响应传值:点击主窗口MainWindow…
当WindowStyle="None"时,设置AllowsTransparency="True",则不会出现黑色Border,然后可以另外设置外边的Border和BorderThickness; 当WindowStyle="None"时,生成的窗体无法移动,此时需要定义MouseMove="Window_MouseMove"事件,实现鼠标左键按下可拖动窗口: xaml代码如下: <Window x:Class="…
在制作软件使用手册或者操作示范市,比较常用方式有截图和视频制作.如果软件内置当前状态的截图和操作视频的导出功能,则将极大简化这方面的工作.使用wpf编写的UI界面,截图的导出功能逻辑相对简单,通用的实现步骤如下: 1.构建窗体与相关实现逻辑: 2.构建窗体的封装容器,包含窗体视图.DrawingVisual字段和窗体大小字段: private readonly DrawingVisual dv; private readonly TestView previewControl; private…
先上图 新建CustomControl,名:HeaderedWindow Themes\Generic.aml文件夹下加入 笔刷,转换器 <SolidColorBrush x:Key="ActiveBackground" Color="#FF66CBEA"/> <SolidColorBrush x:Key="DeactiveBackground" Color="#FFC2D6DC"/> <loc:…
程序主窗口的 Closed 事件中添加代码: Process.GetCurrentProcess().Kill();…
用Qt做界面的时候,很多时候都会遇见点击一个按钮弹出一个新的窗口的功能.我在刚开始做这个功能的时候,直接是点击一次按钮就new一个新的窗口,每次都只是将子窗口关闭而已,并没有去释放子窗口的资源,这样就会出现重复点击按钮的话,窗口的资源就会越积越多. 所以在新建一个窗口的时候就可以设置窗口的属性,设置窗口在关闭之后立即释放资源: notepadpage *NotepadPage = new notepadpage();   //20190318:Tengfei:设置子窗口属性,在子窗口关闭之后,释…
关闭图标设计主要涉及主要知识点: 1.Path,通过Path来画线.当然一般水平.竖直也是可以用Rectangle/Border之类的替代 一些简单的线条图标用Path来做,还是很方便的. 2.简单的动画,Animation用法 Button样式如下: <Button x:Name="BtnClose" Click="BtnClose_OnClick"> <Button.Template> <ControlTemplate Target…
xaml.cs文件: using System; using System.Timers; using System.Windows; using System.Windows.Forms; namespace ControlUsed { //要修改控件的属性 只能在定义控件的xaml或者xaml对应的cs文件修改. 首先订阅Monitor的PartEvent事件,当触发PartEvent事件时(可能并不在类MainWindow对象中),被注册的函数就行做出相应的响应. public parti…
代码 MainWindow mwin = new MainWindow(); Application.Current.MainWindow = mwin; this.Close(); mwin.Show(); 参考:http://bbs.csdn.net/topics/370266691…