[英]c# - inheritance WPF layout - Window from Window
我對“窗口”的繼承存在問題,我不明白問題是什么?
我認為,我的布局(MediaLibrary.xaml)必須繼承MainWindow ...但是我不知道該怎么做:/
有2個班級:
MainWindow.xaml
<Window x:Class="WindowsMediaPlayerV2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MyWindowsMediaPlayer v2" Height="350" Width="525" MinHeight="350" MinWidth="525">
<Grid>
</Grid>
</Window>
MainWindow.xaml.cs
namespace WindowsMediaPlayerV2
{
public partial class MainWindow : Window
{
public MediaLibrary myMediaLibrary = new MediaLibrary();
public MainWindow()
{
InitializeComponent();
}
}
}
MediaLibrary.xaml
<Window x:Class="WindowsMediaPlayerV2.MediaLibrary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MediaLibrary" Height="350" Width="300" MinHeight="350" MinWidth="300" Closing="Window_Closing">
<Grid>
</Grid>
</Window>
MediaLibrary.xaml.cs
namespace WindowsMediaPlayerV2
{
public partial class MediaLibrary : MainWindow //problem here when I run
{
public MediaLibrary()
{
InitializeComponent();
}
}
}
運行時出錯:
FR:“ WindowsMediaPlayerV2.MediaLibrary”聲明與基礎類有所不同
EN:“ WindowsMediaPlayerV2.MediaLibrary”的部分聲明不能指定其他基類。我們可以幫我嗎? 謝謝
您不能像您正在嘗試的那樣對可視化.XAML類進行子類化。 只能繼承C#代碼中內置的類。
就是說,您可以針對樣式,顏色等(或在代碼中創建)創建自己的窗口視覺主題,然后通過代碼在該類上構建類。
public class MyWindow : Window
{
public class MyWindow()
{
SomeProperty = SomeValue;
}
protected void SomeCustomFunction(int AnyParameter)
{
SomethingCommon = AnyParameter;
}
etc...
}
構建您的項目,以便出於派生目的而知道/可用該類。
現在,當您創建基於.XAML的窗口時,讓其基於“窗口”創建默認窗口。 然后,修改.XAML.cs和.cs版本,並更改對“ MyWindow”類的引用,例如...
從
<Window x:Class="blah...
至
<myLib:MyWindow x:Class="blah
xmlns:myLib="clr-namespace:MyWpfClassLibrary"
在XAML中,您還需要添加對類庫名稱空間的引用,類似於...如果窗口類位於另一個項目/名稱空間中,則為xmlns。 “ myLib”就像該類庫的“別名”,因此可以在XAML的其余部分中使用,它知道如何/在何處解析類引用。
在.cs代碼中,更改
public partial class blah : Window
至
public partial class blah : MyWindow
如果您的類庫在相同的名稱空間中,那么您應該一切順利。 如果沒有,您可以添加一個
using MyLibrary; before the public partial class -- OR
public partial class blah : MyLibrary.MyWindow
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.