DRa*_*app 14 c# wpf inheritance
我确信这很简单,但对于使用C#的WPF我来说是新手.我知道从类中继承并且已经完成了很多次,例如在C#WinForms项目中......
public class MyClass : DerivedFromClass
{}
Run Code Online (Sandbox Code Playgroud)
但是,在WPF中难倒,这就是问题所在.我想构建我自己的一组控件,用作新学习项目的基线...预设我自己的样式,颜色,背景和其他功能.没问题.首先使用WPF窗口启动并创建"MyWindow".
现在,我想将此基线"MyWindow"和子类THAT用于另一类MySubClassedWindow.因此,我创建了一个新的Window类,默认情况下,VS2010构建表单的设计器和代码部分.我在MySubClassedWindow上查看代码并查找
partial class MySubclassedWindow : Window
{}
Run Code Online (Sandbox Code Playgroud)
在使用WinForms的C#中,我只想改为(并且我已经包含了包含"MyWindow"声明的类库引用.
partial class MySubclassedWindow : MyWindow
{}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到一个编译错误
Partial declarations of 'MyNameSpace.MySubclassedWindow' must not specify different base classes
Run Code Online (Sandbox Code Playgroud)
Fre*_*lad 35
您的基类应该只是一个类文件(而不是a Window).
所以创建WindowBase.cs
public class WindowBase : Window
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
在MainWindow中(例如)将xaml.cs文件更改为从WindowBase继承
public partial class MainWindow : WindowBase
{
public MainWindow()
{
InitializeComponent();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
在MainWindow.xaml中,包含WindowBase的命名空间,并将Window更改为base:WindowBase,如下所示
<base:WindowBase x:Class="SubclassWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:base="clr-namespace:NamespaceForWindowBase"
Title="MainWindow" Height="350" Width="525">
<!--...-->
</base:WindowBase>
Run Code Online (Sandbox Code Playgroud)