2015-03-02 80 views
0

我使用的是.NET 4.5 WPF功能區,並且希望在所有情況下都更改一個特定RibbonTab的背景顏色(不管它是否被選中,懸停或不是 - 不要詢問爲什麼)。通常我會查看Blend中模板的代碼,但試圖複製樣式失敗,並顯示錯誤「無法複製模板」。更改TabControl的Backgroundcolor

到目前爲止,我有以下幾點:

<RibbonTab.HeaderStyle> 
    <Style TargetType="RibbonTabHeader" BasedOn="{StaticResource {x:Type RibbonTabHeader}}"> 
     <Setter Property="Background" Value="Red" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True"> 
       <Setter Property="Background" Value="Yellow" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</RibbonTab.HeaderStyle> 

的問題是,我似乎無法找出上選擇選項卡控件時,如何改變顏色的方法。

回答

3

我不能評論,因爲我沒有足夠的聲望呢。

RibbonTabHeader具有以下屬性:

  • CheckedBackground - 獲取或設置用於繪製 後臺控制的當它處於選中狀態的刷。
  • FocusedBackground - 獲取或設置畫筆,該畫筆用於在控件具有焦點時繪製背景。
  • MouseOverBackground - 獲取或設置畫筆,用於在鼠標懸停時繪製控件的背景 。
  • Background - 獲取或設置描述控件背景的畫筆。 (繼承自Control)

你有沒有嘗試設置MouseOverBackgroundYellow, 的CheckedBackground你想,當它選擇使用顏色和Background爲「未選中,不徘徊」狀態。

1

使用Snoop我發現它是CheckedBackground,您需要更改您的RibbonTab。原因是在模板中有一個邊框在其父母IsSelected發生變化時觸發其背景。這種顏色分別綁定到CheckedBackgroundBackground
我能創造與此代碼的工作示例:

<RibbonTab> 
    <RibbonTab.Header> 
     <RibbonTabHeader Content="TabName here" 
         CheckedBackground="Red" 
         Background="Red" /> 
    </RibbonTab.Header> 
</RibbonTab> 

選定和未選定時,這一直顯示爲紅色。