2013-12-08 86 views
0

我有我的'窗口'繼承問題,我不明白是什麼問題?c# - 繼承WPF佈局 - 來自窗口的窗口

我想,我的佈局(MediaLibrary.xaml)要繼承主窗口的......但我不知道如何做到這一點:/

有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:萊斯聲明partielles德 'WindowsMediaPlayerV2.MediaLibrary' NE doivent passpécifierdes classes de basedifférentes

EN:'WindowsMediaPlayerV2.MediaLibrary'的部分聲明不能指定不同的基類 我們可以幫助我嗎?謝謝

回答

3

你不能繼承像你正在嘗試的可視.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