Изменение стиля с помощью привязки данных в зависимости от состояния CheckBox - PullRequest
1 голос
/ 06 февраля 2012

В одном из моих пользовательских элементов управления WPF у меня есть флажок. Если флажок не установлен, я хотел бы использовать следующее:

<vf:DataSeries Style="{StaticResource dataSeriesQuickLine}" ... >

Однако, если он отмечен, я хотел бы использовать следующее:

<vf:DataSeries Style="{StaticResource dataSeriesLine}" ... >

Есть ли способ привязать стиль к элементу управления флажком, чтобы использовать нужный стиль?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 06 февраля 2012

Да, вы можете привязать к IsChecked и использовать Binding.Converter, который имеет свойства для стилей и возвращает любой из них в зависимости от входного значения.

Вы можете использовать универсальныйлогический преобразователь:

<vc:BooleanConverter x:Key="StyleConverter"
                     TrueValue="{StaticResource Style1}"
                     FalseValue="{StaticResource Style2}"/>
public class BooleanConverter : IValueConverter
{
    public object TrueValue { get; set; }
    public object FalseValue { get; set; }

    // In Convert cast the value to bool and return the right property
}
1 голос
/ 06 февраля 2012

Добавьте следующие пространства имен в ваш xaml: XMLNS: я = "http://schemas.microsoft.com/expression/2010/interactivity" XMLNS: е = "http://schemas.microsoft.com/expression/2010/interactions"

Установите стиль по умолчанию для вашего элемента управления на Style2. затем назначьте имя своему контролю и Добавьте следующий триггер и действие где-нибудь в вашем xaml (например, перед закрытием тега vf: DataSeries):

 <i:Interaction.Triggers>
   <ei:DataTrigger  
       Binding="{Binding ElementName=yourCheckboxName, Path=IsChecked}"   
       Value="True">
       <ei:ChangePropertyAction TargetName="yourControlName"
                                 PropertyName="Style"
                                 Value="{StaticResource Style1}"/>
   </ei:DataTrigger>
 </i:Interaction.Triggers>
...