2013-12-08 1 views
0

'창'에 대한 상속에 문제가 있습니다. 문제가 무엇인지 이해하지 못합니까? 내가 생각C# - 상속 WPF 레이아웃 - 창에서 창

, 내 레이아웃 (MediaLibrary.xaml)은 MainWindow를의 상속이 ...하지만 난 그렇게 할 방법을 알고하지 않습니다

MainWindow.xaml :/

2 개 클래스가 있습니다

<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'네브라스카 기본 교과 과정을 배우는 도우미

EN : 'WindowsMediaPlayerV2.MediaLibrary'의 일부 선언은 다른 기본 클래스를 지정하면 안됩니다. Google에서 도와 드릴까요? 감사합니다.

답변

3

시도하고있는 것처럼 시각적 인 .XAML 클래스를 서브 클래스로 분류 할 수 없습니다. C# 코드에서 빌드 된 클래스 만 상속 될 수 있습니다.

이제는 스타일, 색상 등 (또는 코드에서)에 대한 창의 시각 테마를 직접 만든 다음 코드에서 해당 클래스에 따라 클래스를 빌드 할 수 있습니다.

public class MyWindow : Window 
{ 
    public class MyWindow() 
    { 
     SomeProperty = SomeValue; 
    } 

    protected void SomeCustomFunction(int AnyParameter) 
    { 
     SomethingCommon = AnyParameter; 
    } 

    etc... 
} 

프로젝트를 구성하여 파생 클래스로 사용할 수 있도록 프로젝트를 작성하십시오.

이제 .XAML 기반 창을 만들 때 "창"을 기반으로 기본 창을 만들어 보겠습니다. 그런 다음에

<myLib:MyWindow x:Class="blah 
    xmlns:myLib="clr-namespace:MyWpfClassLibrary" 

<Window x:Class="blah... 

에서 ...

당신의 .XAML.cs하고 .cs 버전을 모두 수정하고 "MyWindow"클래스 같은 뭔가에 대한 참조를 변경 XAML을 사용하는 경우 클래스 라이브러리 네임 스페이스에 대한 참조를 추가해야합니다 (예 : 창 클래스가 다른 프로젝트/네임 스페이스에있는 경우 xmlns). "myLib"은 해당 클래스 라이브러리의 "별칭"과 유사하므로 XAML의 나머지 부분에서 사용할 수 있으므로 클래스 참조를 해결할 방법/위치를 알고 있습니다.

public partial class blah : MyWindow 

클래스 라이브러리가 같은 공간에있는 경우에 CS 코드 변경

public partial class blah : Window 

, 당신은 갈 수 있어야한다. 그렇지 않은 경우 추가 할 수 있습니다.

using MyLibrary; before the public partial class -- OR 

public partial class blah : MyLibrary.MyWindow