WPF 窗体继承

Winform中如果想继承某一个窗体,只要

public partial class Form1: MyForm
{
}

就轻松加愉快的解决了,但是在WPF中,如果只是单纯的修改cs文件,让它继承自定义的窗体,就要出错了。

    public partial class MainWindow : BaseWindow
    {
        public  MainWindow()
        {
            InitializeComponent();
        }
    }

提示 “Partial declarations of 'WpfApplication1.MainWindow' must not specify different base classes”


为了解决这个问题,你还需要修改 xaml 中对应窗体的代码。原来的代码如下

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="345">
    <Grid>

    </Grid>
</Window>


上面的第一行代码其实就说明了 “MainWindow” 是继承自 “Window” 的。所以我们要修改这行代码,让它变成

<BaseWindow x:Class="WpfApplication1.MainWindow"


但是BaseWindow这个节点对于XML来说是个未知的类型,还必须为该节点添加一个名称空间,让 xaml 去该名称空间下查找此类型。所以,最终代码如下:

<ns:BaseWindow x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ns="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="345">
    <Grid>

    </Grid>
</ns:BaseWindow>


上面,代码演示了如何使用自定义的窗体。如果是使用自定义控件,也可以采用同样的方法。

文章索引

[隐 藏]

本站采用知识共享署名 3.0 中国大陆许可协议进行许可。 ©2014 Charley Box | 关于本站 | 浙ICP备13014059号