2010-07-25 4 views
0

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

<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) В коде основы для свойства «AStatus», который вы можете захотеть сделать свойство зависимостей, перейти на новый VisualState с помощью VisualStateManager. Однако при использовании этого метода не существует полностью решения XAML, например, в WPF. Создайте VisualState, который представляет стиль/сеттеры, которые вы хотите использовать (как триггер).

Here является примером из моего блога.

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

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

+0

Спасибо! Не могли бы вы указать, что касается опции №1, вы имели в виду переход на новый VisualState в файле «Код за собой» на странице XAML с помощью какого-либо обработчика событий? Если да, какой обработчик событий вы предпочитаете использовать? Если вы хотели сделать этот переключатель в файле C#, который содержит все свойства моего пользовательского элемента управления (BTW - это свойства зависимостей), пусть это будет MyCustControl.cs, не могли бы вы предоставить небольшой пример этой части кода? +1 – rem

+0

В коде позади страницы XAML, в свойстве AStatus. Я указал на пример в своем блоге. – WiredPrairie

+0

Спасибо! Это будет хорошим началом для меня. – rem