WPF自定义窗口相关方法介绍
创始人
2024-06-18 00:11:27
0

在这篇文章中我们将会为大家介绍一下有关WPF自定义窗口的继承方法。这一方面的知识点对于初学者来说是非常重要的。我们需要牢固掌握这一技巧。#t#

假设我们写好的父窗口类为BaseWindow,对应BaseWindow.cs和BaseWindow.xaml, 要继承它的窗口为Window1,对应Window1.cs和Window1.xaml,我们常常进行的动作是将VS为我们自动生成的代码中的如下语句:

 

  1. public partial class 
    Window1 : Window 

修改成:

 

  1. public partial class 
    Window1 : BaseWindow 

 

但编译后,你会得到一个错误:Window1有着不同的基类。

这是因为在window1.xaml中

 

  1. < Window 
  2. xmlns="http://schemas.
    microsoft.com/winfx/2006
    /xaml/presentation" 
  3. xmlns:x="http://schemas.
    microsoft.com/winfx/2006/xaml" 
  4. x:Class="InheritWindow
    Demo.Window1" 
  5. Width="300" Height="300"> 
  6. < Grid x:Name=
    "LayoutRoot"/> 
  7. < /Window> 

 

我们的WPF自定义窗口继承了Window类,打开Window1.g.cs也可以看到这一点(这是VS自动生成的一个中间文件,可以在Window1的InitializeComponent()方法上“转到定义”来跳转到该文件,也可以在Obj"Debug目录下找到)。这就使得我们的Window1同时继承Window和BaseWindow类,多继承是不被允许的。

那么自然地,需要修改Window1.xaml,将其中的根“Window”,修改成我们的BaseWindow:

 

  1. < src:BaseWindow xmlns=
    "http://schemas.microsoft.
    com/winfx/2006/xaml/presentation" 
  2. xmlns:x="http://schemas.
    microsoft.com/winfx/2006/xaml" 
  3. x:Class="InheritWindowDemo.
    Window1" 
  4. xmlns:src="clr-namespace:
    InheritWindowDemo" 
  5. Height="300" 
  6. Width="300"> 
  7. < Grid> 
  8. < /Grid> 
  9. < /src:BaseWindow> 

 

心想,这下可以编译通过了吧,抱歉,不行,又得到另一个编译错误:src:BaseWindow不能是Xaml文件的根,因为它是由Xaml定义的,目前我避免这个问题的办法是让BaseWindow仅仅在C#中定义(即,没有BaseWindow.xaml,只有BaseWindow.cs)。

OK,WPF自定义窗口编译顺利通过,继承成功。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...