2009-08-19 3 views
12

별도의 Silverlight 페이지 클래스에 대해 .xaml 파일에서 공통 기본 클래스를 어떻게 지정할 수 있습니까? 페이지에 걸쳐 공유하려는 몇 가지 공통 속성이 있지만 생성 될 때마다 .g.cs 파일에서 기본 클래스를 수동으로 변경하지 않으면이 작업을 수행하는 방법을 알지 못합니다..xaml 파일 (Silverlight)에서 다른 기본 클래스를 어떻게 지정합니까?

이것이 가능합니까? 예를 들어 Toolkit의 ChildControl은 다른 클래스에서 파생 된 이후로 가능하다고 가정합니다. 나는 명백한 것을 간과하고 있는가?

답변

29

모든 Silverlight "페이지"는 기본적으로 UserControl에서 파생됩니다. 그래서, 여기 당신이해야 할 일이 있습니다. 간단한 예를 들어, 물론 Dependency 속성, 이벤트 등을 선언하고 싶을 수도 있습니다.

public class YourUserControlBase : UserControl 
{ 
    public bool SomeProperty {get; set; } 
} 

2. 새가 들어있는 지방 의회와 네임 스페이스에 대한 XML 네임 스페이스를 추가/만들기 페이지의 XAML

을 수정 일반적인 속성 클래스 만들기 기본 클래스를 사용하고 파일 맨 위에 x:Class 특성을 유지하지만 UserControl 루트 요소를 로컬 이름으로 수정해야 함을 기억하십시오

<local:YourUserControlBase 
xmlns:local="clr-namespace:SilverlightApplication1" 
x:Class="SilverlightApplication1.MainPage" 
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" 
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> 

제대로 상속 (하지 자동 생성 된 하나의 Page.xaml.cs 파일)

코드 숨김 수정 : 414,여기 내 업데이트 된 파일입니다 YourUserControlBase :

public partial class MainPage : YourUserControlBase 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 
} 

그게 틀림 없어! 행운을 빕니다.

+0

안녕하세요, 감사합니다! 나는 처음에 '개발자와 그의 이름을 공유한다는 점에서 흥미 롭다.';-). 자동 완성도 좋아합니다. 방금 내 상사를 침을 흘리며 사용자 정의 템플릿 컨트롤을 만들었습니다. 감사합니다. 그래도, =) – Travis

+0

당신이 추가 할 기능이 없으며 가치가있는 것보다 더 많은 문제를 추가하고 싶다면 ... x : BaseClass = "Namespace .UserControlBase " 다시 한번 감사드립니다! – Travis

+0

XAML 호환성은 그 이후로 힘든 것입니다. 그렇지만 저는 그 의견을 듣고 있습니다. 피드백을 공유하겠습니다. 도와 줘서 기뻐요! –

6

또한 : 당신의 기본 클래스가 다른 어셈블리 (프로젝트)에있을 때 당신은이 작업을 수행 할 수 있습니다

xmlns:Custom="clr-namespace:SilverlightApplication1;assembly=[Other.Assembly]"

관련 문제