2012-02-06 55 views
1

在我的WPF用戶控件之一中,我有一個複選框。如果未選中該複選框,我想用下面的:根據CheckBox狀態通過數據綁定更改樣式

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

但是,如果它被選中,我想用下面的:

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

有沒有一種方法,我可以將樣式綁定到複選框控件以使用我想要的樣式?

謝謝。

回答

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

添加下列命名空間到你的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> 
相關問題