首页
学习
活动
专区
工具
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.4K80

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

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

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

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

    30520

    WPF 在 Alt+Tab 隐藏窗口

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

    3.1K30

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

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

    2.1K50

    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

    43420

    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

    68620

    Qt创建一个OpenGL窗口

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

    2.3K20

    创建一个窗口和按钮

    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

    75830

    解决 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

    76940

    在Excel中再创建一个瀑布图

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

    31820

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

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

    55140

    一个最基本的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(); 这样我们创建的第一个

    98250

    滑动窗口在算法中的应用

    例题1:找到字符串中的所有异位词 题目背景: 朋友小明在编程比赛中遇到了一个问题:如何在一个长字符串中找到所有与目标字符串异位的子串?我们需要通过滑动窗口找到所有这些位置。...例题2:水果成篮 题目背景: 我们去果园摘水果,朋友们想知道,如何在一个果树排列中,找到最长的连续子集,使得我们可以只用两个篮子装下这些水果。...题目描述: 在一排树中,第 i 棵树上有 tree[i] 型号的水果。你可以选择两个篮子,每个篮子只能装一种型号的水果。你需要找到可以采摘的水果的最大数量。...题目描述: 给你一个仅由大写英文字母组成的字符串 s,你可以最多将 k 个字符替换为任意字符,求在执行上述操作后,能够得到的最长重复字符的子串的长度。...通过维护一个动态窗口,滑动窗口不仅能够帮助我们有效解决问题,还可以极大地优化时间复杂度。在这些例子中,我们用 Java 语言展示了滑动窗口在寻找异位词、最大水果采摘量、以及字符替换中的应用。

    8910
    领券