2014-01-09 104 views
0

我有這段代碼,用鼠標懸停設置ComboBoxItem的背景。ComboBoxItem突出顯示顏色Windows8

<ComboBox.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"  Color="Orange"/> 
     </ComboBox.Resources> 
     <ComboBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ComboBoxItem}"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="BorderBrush" Value="Orange" /> 
         <Setter Property="BorderThickness" Value="2" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </ComboBox.ItemContainerStyle> 

在Win Vista,Win 7中沒有問題,但在Win8上沒有問題。我讀過他們改變了航空框架,我必須使用controltemplate。如何做到這一點?

回答

0

很抱歉,但觸發器不支持在Windows 8 RT您上傳xaml..the代碼必須是WPF的xaml..and可以改變comboboxitem風格類似下面

<ComboBox Height="20" Width="200"> 
     <ComboBox.Resources> 
      <SolidColorBrush x:Key="OrangeColor" Color="Orange"/> 
      <SolidColorBrush x:Key="OpacityOrangeColor" Color="Orange" Opacity="0.5"/> 
     </ComboBox.Resources> 
     <ComboBox.ItemContainerStyle> 
      <Style TargetType="ComboBoxItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ComboBoxItem"> 
          <Grid> 
           <Border x:Name="Border" Background="Transparent"/> 
           <ContentPresenter></ContentPresenter> 
          </Grid> 
          <ControlTemplate.Triggers> 
           <Trigger Property="ComboBoxItem.IsMouseOver" Value="True"> 
            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource OrangeColor}" /> 
            <Setter TargetName="Border" Property="BorderThickness" Value="2" /> 
            <Setter TargetName="Border" Property="Background" Value="{StaticResource OpacityOrangeColor}" /> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ComboBox.ItemContainerStyle> 
     <ComboBoxItem>xcvxvxc</ComboBoxItem> 
     <ComboBoxItem>sdfdsfsd</ComboBoxItem> 
    </ComboBox> 

並沒有需要在ComboBox的資源中存儲顏色..你可以直接將顏色應用於背景和邊界刷。我已經在資源中保存了,因爲你在資源中保存了

+0

謝謝,作品完美! – user1632298

+0

不客氣! –

+0

你說*觸發器不支持Windows 8 xaml *。讓我們清楚這一點,因爲這是不正確的......觸發器只在Windows 8 RT中不受支持。 – Sheridan

0

我還沒有使用它,但我相信,在窗口8,你可以通過簡單地重寫此新Brush因爲你用舊SystemColors.HighlightBrushKey一個沒有滿足你的要求:

<SolidColorBrush x:Key="ComboBoxItemSelectedBackgroundThemeBrush" Color="Orange" /> 

這也取決於無論您是使用黑暗還是淺色主題,但可以在MSDN上的ComboBoxItem styles and templates頁面中找到這些新Brush es的完整列表。

+0

我只是簡單地添加它而已? <的SolidColorBrush X:鍵= 「{x:靜態SystemColors.HighlightBrushKey}」 顏色= 「橙色」/> <的SolidColorBrush X:鍵= 「ComboBoxItemSelectedBackgroundThemeBrush」 顏色= 「橙色」/> < /ComboBox.Resources> – user1632298

+0

它沒有工作?你知道,我剛剛對這個主題進行了很好的搜索,關於這方面的信息令人驚訝。這些新的'刷子'是用新的['ThemeResource'標記擴展](http://msdn.microsoft.com/en-us/library/windows/apps/dn263118.aspx)聲明的,這個鏈接頁面提供了關於他們,但沒有關於更新值的信息。基本上,Windows 8.1用戶界面控件都使用這些'ThemeResource',所以理論上講,如果你在本地範圍內定義具有相同'x:Key'值的新'Brush',那麼使用該資源的任何UI控件都應該使用新的價值。 – Sheridan

+0

在我看來,沒有留言評論的人是愚蠢的......這是毫無意義的,因爲他們毫無意義。謹慎解釋你的投票神祕向下投票? – Sheridan

相關問題