2012-02-06 15 views
1

私のWPFユーザーコントロールの1つに、チェックボックスがあります。方法は私はありCheckBoxの状態に応じてデータバインディングを使用してスタイルを変更する

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

]:チェックすると、私は次のように使用したい、

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

しかし:チェックボックスがチェックされていない場合、私は次のように使用したいと思います私はしたいスタイリングを使用するためにチェックボックスコントロールにスタイルをバインドできますか?

ありがとうございました。

答えて

4

はい、IsCheckedにバインドして、スタイルのプロパティを持つBinding.Converterを使用して、入力値に応じてどちらかを返します。

あなたは、一般的なブールコンバーター使用することができますあなたのXAML名前空間に次

<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

追加: のxmlns:I = "http://schemas.microsoft.com/expression/2010/interactivityを" xmlns:ei =" http://schemas.microsoft.com/expression/2010/interactions "

コントロールの既定のスタイルをStyle2に設定します。その後 コントロールに名前を割り当て、 (あなたのVF閉じ例えば前:DataSeriesタグ):どこかXAMLで次のトリガーとアクションを追加

<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> 
関連する問題