WPF自定义窗口相关方法介绍

在这篇文章中我们将会为大家介绍一下有关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自定义窗口编译顺利通过,继承成功。

当前文章:WPF自定义窗口相关方法介绍
标题网址:http://www.gawzjz.com/qtweb2/news4/15854.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联