2011-10-30 30 views
0

トグルボタンのアイコン(コンテンツ:Fluent RibbonBar)を変更したいのですが、IsCheckedプロパティによって異なります。今度は次のスタイルスニペットを書いています:IsCheckedのトリガーがトリガーされない

<Fluent:ToggleButton.Style> 
    <Style BasedOn="{StaticResource RibbonButtonStyle}" TargetType="{x:Type Fluent:ToggleButton}"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Fluent:ToggleButton}}, Path=IsChecked}" Value="False"> 
       <Setter Property="Icon" Value="{StaticResource ResourceKey=Style.Images.Pined}"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Fluent:ToggleButton}}, Path=IsChecked}" Value="True"> 
       <Setter Property="Icon" Value="{StaticResource ResourceKey=Style.Images.Unpined}"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Fluent:ToggleButton.Style> 

問題は、トリガーがイメージをうまく読み込めないことです。問題は、IsCheckedがそれ自体を実現していないことです。私はすでにこれをテストしました。また、アイコンプロパティはどこにでも設定しません。イメージリソースは、他の場所で使用するとうまく動作します。

リビルドのための情報:BackstageTabItemに配置されたRibbonListBoxのDataTemplateとしてToggleButtonをBackstageに配置しました。

+0

あなたはIconプロパティを他の場所で直接設定していませんか?その場合、 'セッター'は動作しません。 – lbergnehr

+0

ToggleButton宣言で直接のみ...試してみます。 – CShark

+0

要素の宣言から「アイコン=」が削除されていません – CShark

答えて

0

例えばあなたがは絶対にそれはスタイルが原因precedenceに行おうとすべてを上書きするよう制御宣言からIconプロパティを削除するを必要としています。

しかし、これらの DataTriggers自体がを除外し、祖先を探します を結合、動作しませんので、すでにアンドリュースで指摘したように、あなたは同様にそれらを変更する必要があります。両方の条件が満たされている場合にのみ、これを動作させる可能性があります(ただし、干渉がさらに発生する可能性があります)。

+0

両方の変更を行っていただきありがとうございます – CShark

1

これはトグルボタンのスタイルなので、findancestorバインディングは必要ありません。selfを使用します。そして、実際にIsCheckedので、DPは、あなただけのトリガを使用することができている - <Trigger Property="IsChecked" Value="False">

+0

トリガを使用してソリューションを試しましたが、何も起こりませんでした。 – CShark

関連する問題