Установка свойства TargetType стиля в универсальный класс - PullRequest
4 голосов
/ 16 июня 2009

Можно ли установить свойство TargetType стиля в XAML для универсального класса?

public class Selector<T> : Control { }

и затем в xaml

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

Это не будет работать, потому что в селекторе отсутствует аргумент типа.

Ответы [ 3 ]

2 голосов
/ 16 июня 2009

Нельзя связать с открытым универсальным типом, таким как List<T>, однако вы можете связать с закрытым универсальным типом, таким как List<Person>, определив тип заполнителя.

C #

class People : List<Person> {}

XAML :

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

Обновление : Вам нужно либо указать TargetType или свойство x:Key для стиля, но не оба.

1 голос
/ 16 июня 2009

Дженерики имеют довольно ограниченную поддержку в XAML. При этом у Майка Хилберга есть довольно интересный пост здесь о пользовательских расширениях разметки, которые могут помочь.

0 голосов
/ 16 июня 2009

Я так понимаю, вы используете обычный WPF, а не Silverlight? Если я не ошибаюсь, вы могли бы сказать это:

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