2009-06-16 5 views
4

XAML에서 스타일의 TargetType 속성을 일반 클래스로 설정할 수 있습니까? 스타일의 TargetType 속성을 제네릭 클래스로 설정

public class Selector<T> : Control { } 

다음 XAML

<Style x:TargetType="Selector"> 
<Setter Property="MyProperty" Value="Green" /> 
</Style> 

선택기는 형식 인수 없기 때문에이 늘 일에

.

답변

2

당신은 개방형 제네릭 형식 같은 List<T>에 바인딩 할 수 없습니다, 당신은 그러나 자리 표시 자 유형을 정의하여 List<Person>처럼 폐쇄 된 제네릭 형식에 바인딩 할 수 있습니다.

C#

:

class People : List<Person> {} 

XAML는 :

<Style TargetType="{x:Type People}"> ... </Style> 

업데이트 : 당신도 스타일에 대한 TargetType또는x:Key 특성, 둘을 지정해야합니다.

+0

비슷한 xaml + generics 상황에서이 솔루션을 찾았습니다. 나는 제네릭 당 10 개의 닫힌 타입을 이미 가지고있다. 나는 스타일 정보를 복제 할 필요가 없다고 생각했다. –

+0

예 ... afaik XAML은 아직 제네릭을 직접 파악하지 못했습니다. – Gishu

0

Silverlight가 아닌 일반 WPF를 사용하고 계십니까? 제가 잘못 본게 아니라면, 당신이 말할 수 :

<Style TargetType="{x:Type Control}" x:Key="{x:Type Control}"> 
</Style> 
+0

예 WPF이지만 일반 클래스에 연결해야합니다. 질문을 더 명확하게 업데이트하겠습니다. –

1

제네릭은 XAML에서 상당히 제한적으로 지원됩니다. 마이크 힐 버그 (Mike Hillberg)는 도움이 될만한 커스텀 마크 업 확장에 대해 꽤 흥미로운 게시물 인 here을 가지고 있다고 말합니다.

관련 문제