Изменение стиля пользовательского элемента управления Silverlight при изменении другого свойства - PullRequest
0 голосов
/ 25 июля 2010

В пользовательском элементе управления WPF я использовал изменение внешнего вида пользовательского элемента управления на основе другого свойства этого пользовательского элемента управления с помощью механизма Triggers , например, когда мой пользовательский элемент управления изменяет свое свойство AStatus значение Available цвет его фона меняется на Green:

<Trigger Property="AStatus" Value="Available">
    <Setter TargetName="PART1" Property="Background" Value="Green"/>
    <Setter TargetName="PART_Backgr" Property="Background" Value="Green"/>
</Trigger> 

Но в Silverlight отсутствуют функции Триггеры . А для изменения внешнего вида пользовательских элементов управления в Silverlight следует использовать VisualStateManager . Но я не могу найти способ, как это условие может быть реализовано с помощью VisualStateManager .

Как можно реализовать изменение стиля пользовательского элемента управления Silverlight при изменении другого свойства этого пользовательского элемента управления?

1 Ответ

1 голос
/ 26 июля 2010

У вас есть два разумных варианта:

1) В коде поддержки для свойства "AStatus", для которого вы можете захотеть создать свойство зависимости, переключитесь на новое VisualState с помощью VisualStateManager. Однако при использовании этой методики не существует полностью XAML-решения, как в WPF. Создайте VisualState, который представляет стиль / сеттеры, которые вы хотите использовать (очень похоже на триггер).

Здесь - пример из моего блога.

2) Если вы используете Blend 4, вы можете использовать DataStateBehavior для выполнения работы, которая могла бы быть выполнена вручную (как в варианте # 1). Вы можете скачать Blend 4 SDK , чтобы вносить изменения такого типа, используя XAML (или визуальный дизайнер).

Обычно я иду с # 1, если пишу пользовательский элемент управления, чтобы минимизировать зависимости от других сборок.

...