根据CheckBox状态通过数据绑定更改样式

时间:2012-02-06 13:35:42

标签: wpf xaml data-binding styles

在我的一个WPF用户控件中,我有一个复选框。如果未选中该复选框,我想使用以下内容:

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

但是,如果选中,我想使用以下内容:

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

有没有办法可以将Style绑定到复选框控件以使用我想要的样式?

感谢。

2 个答案:

答案 0 :(得分:4)

是的,您可以绑定到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 :(得分:1)

将以下命名空间添加到xaml:      的xmlns:I = “http://schemas.microsoft.com/expression/2010/interactivity”      的xmlns:EI = “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>