2012-10-19 5 views
2

파생 된 사용자 컨트롤에서 컨트롤을 파생시키고 있지만 xaml을 해결하는 데 문제가 있습니다. 그러나, 먼저 간단한 시나리오. MyControls.dll 라이브러리가 있습니다. 그 안에는 .cs 파일의 "UserControl"을 기반으로 한 컨트롤이 있습니다.wpf 파생 된 컨트롤에서 파생

public class MyUserControl : UserControl { ... } 

문제 없습니다. 지금, 나는 내가 그런

public partial class NewFromMyUserControl : MyUserControl { ... } 
으로이 같은 MyControls.dll 라이브러리에 각각 NewFromMyUserControl.xaml.cs 및 NewFromMyUserControl.cs라는 새로운 UserControl을을, ...이에서 파생 된 두 번째 (VISUAL) 컨트롤을 만들려면 이렇게

는 이제 XAML에서, 나는

<mylib:MyUserControl x:Class="MyControls.SubFolder1.NewFromMyUserControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mylib ="clr-namespace:MyControls" (blah blah) /> 
</mylib:MyUserControl> 

이는 아무 문제가 작동하지 않습니다 ... 있습니다. 그리고 단순화를 위해 "MyUserControl"또는 "NewFromMyUserControl"클래스의 실제 코드가 없습니다 ... 파생 구현을 테스트합니다.

지금 문제가 있습니다. 나는 다른 라이브러리 내가

public class MyBaselineUserControl : UserControl { ... } 

로에서 ... 같은 파생 원하는 실제의 UserControl을 가지고 있으며, 지금, 나는이 같은 다른

같은에서 파생되는 "을 MyUserControl"를 변경하려면 "MyBaselineControls.dll"가
from 
    public class MyUserControl : UserControl { ... } 
to 
    using MyBaselineControls; 
    public class MyUserControl : MyBaselineUserControl { ... } 

곧이 한 줄 변경으로, 컴파일러는이 XAML을 사용하여 정의 되었기 때문에 XAML 파일의 루트가 될 수 없습니다 ...

오류 2 '를 MyControls.MyUserControl'라는 실패합니다. Line 1 Position 19. ... ㅋㅋㅋ

다른 라이브러리의 파생에서 파생되는 문제가 있습니까?

감사합니다.

+0

이 질문에 기반하여 지원되지 않는 것 같습니다. 중복됩니다. http : // stackoverflow.com/questions/10873008/myusercontrol-can-be-the-xaml-file-it-was-defined-using-xam –

답변

3

XAML 정의가있는 사용자 정의 컨트롤에서 파생 될 수 없습니다. 기본 클래스에서 XAML을 정의하지 않는 한 괜찮을 것입니다. 오류에 대한 특정 정보는 here에서 확인할 수 있습니다.

해결 방법 중 하나는 Control (또는 이 아닌 UserControl이 아닌 다른 클래스)에서 파생되며 기본 및 파생 컨트롤에 대한 컨트롤 템플릿을 정의하는 것입니다. This pageControl 또는 UserControl에서 상속 받았을 때 할 수있는 작업과 파생물을 결정할 때 고려해야 할 사항을 정확히 설명합니다.


편집

것은 당신이 MyBaselineUserControlMyUserControl 모두가 어떤 XAML을 정의하지 않는 말을하고 있기 때문에 상황이 작동합니다. 나는 그것을 나 자신에게 시도했다. 그리고 나는 어떤 문제도 가지지 않고 있었다.

기본 UserControl이 XAML없이 실제로 생성되었는지 확인하는 것이 좋습니다. 즉, 추가 -> 사용자 정의 컨트롤이 아닌이 아닌 "Add -> Class"로 작성되어야합니다.

+0

그게 요점은 ... "MyBaselineControls" 와 "MyUserControl"은 모두 -code only -... "NewFromMyUserControl"만 xaml을 사용하는 첫 번째 시각적 컨트롤입니다. 다른 두 가지는 없습니다. – DRapp

+0

@ DRapp 편집 된 답변보기 –

+0

두 개의 별도 클래스 라이브러리에서 만들었습니까? 예 : "MyBaseline"은 하나의 클래스 라이브러리이고 "MyUserControl"은 두 번째이며 "NewFromMyUserControl"은 같은 클래스입니다 두 번째 라이브러리 "MyUserControl"로? – DRapp

관련 문제