我有一个窗口应该在两个应用程序之间相同,除了一些点。 我想继承它来创建一个子类(没有XAML),只在构造函数中进行一些自定义(如窗口标题)。
这可能吗?
答案 0 :(得分:1)
这可能吗?
是
创建一个继承自pip install flask
pip install werkzeug
:
System.Windows.Window
...并在代码隐藏中更改窗口的基类以使用此类:
public class YourBaseClass : Window
{
public YourBaseClass() : base()
{
Title = "Common Title";
}
}
......在XAML中:
public partial class MainWindow : YourBaseClass
{
public MainWindow()
{
InitializeComponent();
}
}
答案 1 :(得分:0)
与窗体表单不同,WPF没有可视继承。您可以参考此post了解原因。
因此,我们不能在这里使用继承。但是,您可以向Windows类添加自定义属性,并根据属性进行自定义。
假设我想用不同的“标题”创建两个类似的窗口(这只是一个例子,我知道窗口有一个Title属性):
xaml.cs中的:
public WindowTest //constructor
{
InitializeComponent();
this.Loaded+=WindowTest_Loaded;
}
private void WindowTest_Loaded(object sender, RoutedEventArgs e)
{
//Please note that custom property wont be set until Windows is loaded.
//Your customization here
this.Title = TitleText;
}
public string TitleText
{
get { return GetValue( Property1Property ).ToString(); }
set { SetValue( TitleTextProperty, value ); }
}
// Using a DependencyProperty as the backing store for Property1.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty TitleTextProperty
= DependencyProperty.Register(
"TitleText",
typeof( string ),
typeof( WindowTest ),
new PropertyMetadata( String.Empty )
);
in xaml
<Grid>
<test:WindowText TitleText = "Hello World"/> //first window
<test:WindowText TitleText = "I Hate You"/> //second window
</Grid>