2012-03-09 18 views
0

Microsoft.Windows.Controls.Ribbon.RibbonTabオブジェクトのラベルの色をEnabled状態にバインドする際に問題があります。コントロールのIsEnabled状態に前景色をバインドします。

<Style TargetType="{x:Type r:RibbonTab}"> 
    <Setter Property="Foreground" Value="White" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsEnabled}" Value="False"> 
      <Setter Property="Foreground" Value="Gray" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

しかし、それはフォアグラウンドに影響を与えています

は、私が最初に次のことを試しました。それはribbonTabライブラリコードで何かがプログラム的にフォアグラウンドに上書きされるようになります。

私は、この試みた:

<Style x:Key="BaseRibbonTabStyle" TargetType="{x:Type r:RibbonTab}"> 
    <EventSetter Event="IsEnabledChanged" Handler="RibbonTab_IsEnabledChanged" 
</Style> 

 

private void RibbonTab_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) 
{ 
    if((bool)e.NewValue == false) 
     ((RibbonTab)sender).Foreground = (new System.Windows.Media.BrushConverter()).ConvertFromString("Gray") as System.Windows.Media.Brush; 
    else 
     ((RibbonTab)sender).Foreground = (new System.Windows.Media.BrushConverter()).ConvertFromString("White") as System.Windows.Media.Brush; 
} 

をしかし、それはまた、次のコンパイル時のエラーで失敗しました:私はこれを取得できますか

System.Windows.UIElement.IsEnabledChanged="RibbonTab_IsEnabledChanged_Event" is not valid. 'IsEnabledChanged' must be a RoutedEvent registered with a name that ends with the keyword "Event".

作業?

+0

を、あなたも 'ControlTemplate'のコンテキストにありますか? 'TemplatedParent'の仕組みを知っていますか? [バインディングエラー](http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/debugging-data-bindings-in-a-wpf-or-silverlight-application.aspx)がありますか? *全く*意味的に異なるものではない –

答えて

2

は、単純なプロパティトリガー試してみてください:結合ルックスは私に壊れたこと

<Style TargetType="{x:Type r:RibbonTab}"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Foreground" Value="Gray" /> 
     </Trigger> 
    </Style.Triggers> 
    <Setter Property="Foreground" Value="White" /> 
</Style> 
+1

それは働いた。ありがとう、私はこのより単純な方法を最初に試していないとは信じられません。 – Alain

0

あなたはこれを試していました:

<Style TargetType="{x:Type r:RibbonTab}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsEnabled}" Value="False"> 
      <Setter Property="Foreground" Value="Gray" /> 
     </DataTrigger> 
    </Style.Triggers> 
    <Setter Property="Foreground" Value="White" /> 
</Style> 
+0

。 H.B @ –

+0

。はい、そうです。私はトリガーの後にセッターを移動しました。私はそれが違いを見た。 Steveのソリューションは同じことをしています。 –

+3

私はあなたが何をしたか見ることができます。これまでのところ、私はこれが違いを生む場合は見ていません。あなたが私に1つを見せることができれば、私は非常に興味があるでしょう... –

関連する問題