首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在WPF中创建一个公共窗口

在WPF中创建一个公共窗口,可以通过创建一个基础窗口类并将其继承到需要的窗口中来实现。以下是一个简单的示例:

  1. 创建一个基础窗口类,命名为CommonWindow,并继承自Window
代码语言:csharp
复制
using System.Windows;

public class CommonWindow : Window
{
    // 在这里添加公共属性和方法
}
  1. 在需要的窗口中继承CommonWindow
代码语言:csharp
复制
using System.Windows;

public partial class MainWindow : CommonWindow
{
    public MainWindow()
    {
        InitializeComponent();
    }
}
  1. CommonWindow中添加公共属性和方法,例如添加一个标题栏高度的属性。
代码语言:csharp
复制
using System.Windows;

public class CommonWindow : Window
{
    public double TitleBarHeight
    {
        get { return (double)GetValue(TitleBarHeightProperty); }
        set { SetValue(TitleBarHeightProperty, value); }
    }

    public static readonly DependencyProperty TitleBarHeightProperty =
        DependencyProperty.Register("TitleBarHeight", typeof(double), typeof(CommonWindow), new PropertyMetadata(30.0));
}
  1. 在需要的窗口中使用公共属性和方法。
代码语言:csharp
复制
using System.Windows;

public partial class MainWindow : CommonWindow
{
    public MainWindow()
    {
        InitializeComponent();
        TitleBarHeight = 50;
    }
}

通过以上方法,可以在WPF中创建一个公共窗口,并在需要的窗口中使用它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DataGrid创建一个弹出式Details窗口

DataGrid创建一个弹出式Details窗口 这篇文章来自DotNetJunkie的提议。...他最初写信要求我们提供一个关于如何创建在DataGrid 中使用HyperLinkColumn的例子,可以在用户点击这一列后打开一个窗口,显示出此列的详细内容。...这个例子包含两个WebForms和一个css文件(所有的代码都可以下载)--第一个WebForm包含一个展示从Northwind库读出的产品列表的DataGrid,hyperlink的states设为...javascript片段(注:你也可以简单地创建一个.js文件或在WebForm中使用),javascript如此普及,所以这里不再详细讲解。...功能上,它打开一个新的窗口,带ProductID查询字串的WebForm2.aspx,ProductID的值来自我们的数据源。

2.3K80

WPF 已知问题 窗口屏幕外创建将不会刷新渲染

本文告诉大家一个 WPF 的已知问题,如果窗口创建的时候,设置屏幕外,那这个窗口将不会进行实际的渲染,将这个窗口从屏幕外移到屏幕内的时候,将会出现窗口内容的一次闪烁。...换句话说就是存在窗口内容的重渲染 什么是窗口屏幕外创建?...简单说法就是窗口不在屏幕内,如窗口的 Top 或 Left 太大或太小等,如下面代码创建窗口,而我的屏幕没有那么大,因此窗口就显示我的屏幕外 private async void Button_OnClick...Show 之后的一个 Render 内,那么依然窗口闪烁 private async void Button_OnClick(object sender, RoutedEventArgs...但是如果窗口能足够卡,也许此时很多设备都是看不到这个创建窗口

68830

WPF 的 Dispatcher 为什么要创建一个隐藏窗口

深入了解 WPF Dispatcher 的工作原理(Invoke/InvokeAsync 部分),我提到 Dispatcher 构造函数创建一个隐藏窗口专门用来接收消息,以处理通过 Invoke...然而 C 不满足于只看到这个结论,他更期望知道为什么 WPF 一定要创建这个隐藏的窗口。其实对这个问题我也不知道答案,但在和他深入的探讨以及不断寻找资料的过程,我们逐渐得知了缘由。...再大不了觉得这样消息循环中耦合了 Dispatcher 内的机制的话,可以利用一下“依赖倒置”原则将这种依赖抽象一下,解决代码可维护性的问题的同时,依然能可以避免额外创建一个窗口。...虽然不能正面证明前面 WPF 创建隐藏消息窗口的必要性,但可以知道这至少是一个常用做法。既然常用,那一定有其存在的必要性。...设想,有一个开发者处理某条消息的时候自己创建一个新的消息循环(即嵌套的消息循环),那么那个开发者必须在自己的消息循环里调用一下 Invoke 的那些操作,否则那些操作将没有任何机会被执行!

18620

WPF Alt+Tab 隐藏窗口

最近在开发一个 Toast 窗口,因为这个窗口不能在显示之后关闭,因为可能用户会不停让窗口显示,所以只能 Hide 。...但是这样会在 切换窗口看到这个窗口,所以我找到了一个方法来让 WPF 窗口不在切换窗口显示。...现在的 WPF 程序只要设置了不在任务栏显示,而且设置窗口Visibility="Hidden"就可以不在切换窗口显示窗口。...设置方法可以是 xaml 添加下面代码 ShowInTaskbar="False" Visibility="Hidden" 但是如大家见到,如果存在 BitmapCache 和 一个隐藏的窗口,那么就会在锁屏之后软件无法渲染...实际上切换窗口不显示窗口要求窗口是:WS_EX_TOOLWINDOW 或其他窗口的子窗口,但是可以看到 Toast 不是其他窗口的子窗口,所以只能设置窗口

3K30

WPF 获取全局所有窗口创建显示事件 监控窗口打开

本文将告诉大家如何在 WPF 里面进行全局监控任意的窗口创建显示打开,可以获取到每个 WPF 窗口的打开的时机。...于是我就在自己的应用上写了一个逗比代码,强行弹出一个 Dialog 窗口出来,结果我就发现监控模块告诉了我有一个白名单之外的窗口弹出了,如果确定这是符合开发预期的,那就需要手动修改白名单。...这是一个开发时的辅助机制,用来让开发者不要随便弹出窗口,我又好奇这个监控模块是如何监控到我弹出一个窗口的,学习了监控模块的机制,就写了这个博客 WPF 里面,可以通过 EventManager 监听全局的路由事件...但是 WPF 里面做了一些性能优化,如果一个窗口没有 XAML 或者是没有任何代码监听了 Loaded 事件,那将不触发 LoadedEvent 路由事件。...通过 sender 参数即可了解是哪个窗口对象被创建,接着就可以方便进行日志或者是提示开发者不要随便创建窗口等 可以自己测试一下代码,例如在 MainWindow 里面再次创建一个窗口 public

1.9K50

WPF 一个空的 WPF 程序有多少个窗口

好多小伙伴说 WPF 的程序有五个窗口,但是我尝试使用了 EnumThreadWindows 去获取的时候居然拿到了 10 多个窗口 WPF 内部的5个窗口之 MediaContextNotificationWindow...听说有五个窗口 可以通过 user32 的 EnumThreadWindows 找到一个线程的窗口 delegate bool EnumThreadDelegate(IntPtr hWnd...EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam); 获取线程的 id 的方法需要先获取进程,...Loaded 之后尝试获取 WPF 的进程,通过 Process.GetCurrentProcess() 可以拿到当前的进程 通过 process.Threads 可以拿到进程的线程,封装为一个方法...,但是如果将代码移动到 WPF 的构造函数,会发现只有两个窗口 public MainWindow() { var handleList = EnumerateProcessWindowHandles

39320

WPF 一个空的 WPF 程序有多少个窗口

好多小伙伴说 WPF 的程序有五个窗口,但是我尝试使用了 EnumThreadWindows 去获取的时候居然拿到了 10 多个窗口 WPF 内部的5个窗口之 MediaContextNotificationWindow...听说有五个窗口 可以通过 user32 的 EnumThreadWindows 找到一个线程的窗口 delegate bool EnumThreadDelegate(IntPtr hWnd...Loaded 之后尝试获取 WPF 的进程,通过 Process.GetCurrentProcess() 可以拿到当前的进程 通过 process.Threads 可以拿到进程的线程,封装为一个方法...,但是如果将代码移动到 WPF 的构造函数,会发现只有两个窗口 public MainWindow() { var handleList = EnumerateProcessWindowHandles...内部的5个窗口之 MediaContextNotificationWindow ---- 本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF

65420

Qt创建一个OpenGL窗口

这个例程直到OpenGL窗口创建之后才会被调用。...以后的每个教程我都会在例程的此处增加新的代码。如果您对OpenGL已经有所了解的话,您可以 glLoadIdentity()调用之后,函数返回之前,试着添加一些OpenGL代码来创建基本的形。...这么做创建一个现实外观的场景。此处透视按照基于窗口宽度和高度的45度视角来计算。0.1,100.0是我们在场景中所能绘制深度的起点和终点。...模型观察矩阵存放了我们的物体讯息。最后我们重置模型观察矩阵。如果您还不能理解这些术语的含义,请别着急。以后的教程里,我会向大家解释。只要知道如果您想获得一个精彩的透视场景的话,必须这么做。...甚至您无法改变窗口的大小时(例如您在全屏模式下),它至少仍将运行一次——程序开始时设置我们的透视图。OpenGL场景的尺寸将被设置成它显示时所在窗口的大小。

2.2K20

创建一个窗口和按钮

public class HomeScreen { public static void main(String[] args) { JFrame aa=new JFrame();//awt包里的,定义一个窗口...aa.setLocation(100, 260);//设置左上角位置 aa.add(an1);//窗口里添加一个按钮 //aa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE...);//防止关闭后资源内存示范,默认关闭操作 aa.setVisible(true);//窗口显示BOOL值,和JFrame成对出现,如果没有将无法建立窗口 } } ` 以上是面向过程的思路,而Java...this.add(an1);//窗口里添加一个按钮 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//防止关闭后资源内存示范,默认关闭操作...this.setVisible(true);//窗口显示BOOL值,和JFrame成对出现,如果没有将无法建立窗口 } } 不需要建对象了,直接封装,aa变成this

73530

解决 WPF 嵌套的子窗口改变窗口大小的时候闪烁的问题

因为 Win32 的窗口句柄是可以跨进程传递的,所以可以用来实现跨进程 UI。不过,本文不会谈论跨进程 UI 的具体实现,只会提及其实现一个重要缓解,使用子窗口的方式。...你有可能在使用子窗口之后,发现拖拽改变窗口大小的时候,子窗口中的内容不断闪烁。如果你也遇到了这样的问题,那么正好可以阅读本文来解决。...---- 问题 你可以看一下下面的这张动图,感受一下窗口的闪烁: 实际上拖动窗口的时候,是一直都在闪的,只是每次闪烁都非常快,截取 gif 的时候截不到。...后来使用 CreateWindowEx 创建一个纯 Win32 窗口,这种闪烁现象更容易被截图: 解决 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19...drawn window frame flickers on resizing if the window contains a HwndHost element - Stack Overflow WPF

52240

如何监视 WPF 的所有窗口,在所有窗口中订阅事件或者附加 UI

由于 WPF 路由事件(主要是隧道和冒泡)的存在,我们很容易能够通过只监听窗口中的某些事件使得整个窗口中所有控件发生的事件都被监听到。然而,如果我们希望监听的是整个应用程序中所有的事件呢?...路由事件的路由可并不会跨越窗口边界呀? 本文将介绍我编写的应用程序窗口监视器,来监听整个应用程序中所有窗口中的路由事件。这样的方法可以用来无时无刻监视 WPF 程序的各种状态。...于是,我们只需要遍历 Windows 集合便可以获得应用程序的所有窗口,然后对每一个窗口监听需要的路由事件。...} Window_Activated 和 Window_Deactivated 事件,我们主要也是在做初始化。...} 另外,我 ApplicationWindowMonitor 的构造函数中加入了一个过滤窗口的委托。比如你可以让窗口的监听只对主要的几个窗口生效,而对一些信息提示窗口忽略等等。

34440

Excel创建一个瀑布图

学习Excel技术,关注微信公众号: excelperfect 标签:Excel图表技巧,瀑布图 在前面的系列文章,我们介绍过几次Excel创建瀑布图的技巧。...本文再结合特定数据创建一个瀑布图。 示例数据如下图1所示。 图1 首先,我们将数据进行整理,将原始的一列数据转换成三列数据,如下图2所示。...图2 选择整理后的数据,单击功能区“插入”选项卡“图表”组的“插入柱形图或条形图——二维柱形图——堆积柱形图”,结果如下图3所示。 图3 选择图表的“不可见”系列,将其填充设置为“无填充”。...单击选取图表的任一系列,设置其间隙宽度为5%。 选择“黑色”系列,给其添加数据标签;同样,选择“白色”系列,给其添加数据标签。

26320

一个最基本的ATL窗口程序创建

项目的创建与配置 创建一个空项目 创建好的项目右击属性, 点击配置选择所有配置....常规下的项目默认值的字符集选项, 修改为使用Unicode字符集 定义WinMain入口函数 右击项目添加->新建项->Visual C++->C++ 文件在这里我添加的cpp文件名是MainFrame.cpp...OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandle) { PostQuitMessage(0); return 0; } 回到一开始创建的...MainFrame.cpp文件 添加头文件(自己创建的类头文件) #include “MainFrame.h” WinMain执行体的最开始添加代码 CMainFrame MainFrame; MainFrame.Create...(“ATLWindow”), WS_OVERLAPPEDWINDOW); MainFrame.ShowWindow(nShowCmd); MainFrame.UpdateWindow(); 这样我们创建的第一个

91950

Python GTK+ 3 创建一个

盒子布局就是这样一个容器,它允许小部件水平或垂直堆叠,从而产生多功能和动态的用户界面设计。要在 Python 制作框布局,请导入模块并配置 GTK+ 库。... __init__ 方法,初始化窗口并设置其标题、默认大小,并将“destroy”信号连接到Gtk.main_quit以处理窗口关闭。...创建一个名为 hbox 的水平 Gtk.Box 来水平保存小部件。 使用 self.add() 方法将 hbox 添加到窗口中。 设置 Gtk.Label 小部件、label1 和 label2。...再创建 2 个 Gtk.Label 小部件,label3 和 label4,并将它们垂直打包在 vbox 创建一个名为 window 的自定义框实例。...输出具有一个自定义窗口,其中水平 Gtk 标签以框样式分组。垂直 GTK 框,并排有两个标签。两个标签分层一个框的顶部。 最大化窗口时,标签将更新。

26010
领券