6

내 코드의 중복을 피하기 위해보다 일반적인 Silverlight 사용자 컨트롤을 상속하는 여러 클래스를 허용하려고합니다. 클래스는 확장 된 컨트롤을 상속하고 사용자 컨트롤 클래스를 상속합니다. 내가 계속 실행하고있는 문제는 잘못된 상속과 함께 컴파일 할 때마다 ExtendedControlExtension.g.cs 파일이 재생성된다는 것입니다. 확장 된 컨트롤이 아닌 사용자 컨트롤을 상속합니다. 나는 .cs 및 g.cs 파일의 확장 컨트롤을 상속하지만,이 오류를Silverlight 사용자 컨트롤 부분 클래스를 사용한 상속

오류 (29) 태그 '를 원인으로에서 .aspx 파일에서 사용자 정의 컨트롤 태그를 계속 사용 된

주 ExtendedControl '은 XML 네임 스페이스'http://schemas.microsoft.com/winfx/2006/xaml/presentation '에 존재하지 않습니다.

해결 방법이 있습니까?

감사합니다.

답변

9

.g.cs 파일을 변경할 수 없습니다. 실제로는 파일에 올바르게 표시되어 있습니다. 또한, "사용자 정의 컨트롤"이라는 용어를 사용하는 것은 불행한 일입니다. 이는 사용자가하려고하는 것이 아닌 특정 것을 의미하기 때문입니다. 그러나 좋은 소식은 당신이하려고하는 것이 가능하다는 것입니다. UserControl에서

파생은 :

public class FancyUserControl : UserControl 
{ 
    // Your added common functionality. 
} 

후 정상 메커니즘을 사용하여 프로젝트에 새로운 UserControl를 추가, 이제 UserControl1을 가정 해 봅시다.

<local:FancyUserControl x:Class="SilverlightApplication1.UserControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:SilverlightApplication1" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <Grid x:Name="LayoutRoot" Background="White"> 

    </Grid> 
</local:FancyUserControl> 

응용 프로그램에 적응하고, 그들에 local로 세 줄에 특별한주의를 지불하고 나서 다음과 같이 UserControl.xaml 파일을 편집 할 수 있습니다.

public partial class UserControl1 : FancyUserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 
    } 
} 

을 및 Visual Studio는 아직 매우 행복하지 않을 것이다 그러나 결국 프로젝트를 재건하고 모든 것이 잘 될 것입니다 : 그런 다음 다음과 같이 UserControl1.xaml.cs 파일을 편집 할 수 있습니다.

클래스 UserControl1UserControl 대신 FancyUserControl에서 파생되었으며 일반적인 기능을 추가 할 수 있습니다. 컨트롤을 더 추가하려면 처음에 각 새 컨트롤을 프로젝트에 추가 한 후 XAML 및 코드 숨김을 수동으로 편집해야합니다.

+0

매우 완벽한 답변을 주셔서 감사합니다. (당신은 .gs 파일을 편집하지 않아도되지만, 질문에 답할 때까지 필자가 필요한 기능을 수행 할 수있는 유일한 방법입니다)! – badpanda

+0

+1 잘 구성된 답. – AnthonyWJones

관련 문제