2014-01-09 2 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. Я прочитал, что они изменили структуру в aero, и я должен использовать controltemplate для нее. Как это сделать?

ответ

0

Извините, но Триггеры не поддерживаются в Windows 8 RT xaml..the код вы загрузили это должно быть МОФ 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

Вы сказали * Триггеры не поддерживаются в окнах 8 xaml *. Давайте будем понятны об этом, потому что это неверно ... Триггеры не поддерживаются только в Windows 8 RT. – Sheridan

0

Я не использовал его, но я считаю, что в окне 8, вы можете выполнить ваше требование просто перекрывая этот новый Brush как вы сделали со старым SystemColors.HighlightBrushKey один:

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

Это также зависит используете ли вы темную или светлую тему, но вы можете найти полный список этих новых Brush es на странице ComboBoxItem styles and templates на MSDN.

+0

Мне просто нужно добавить к нему? < /ComboBox.Resources> – user1632298

+0

Разве это не сработало? Знаешь, у меня только что был хороший поиск по этому вопросу, и на этом есть удивительно мало информации. Эти новые 'Brush'es объявляются с новым расширением разметки' 'ThemeResource '' (http://msdn.microsoft.com/en-us/library/windows/apps/dn263118.aspx), и эта связанная страница содержит подробную информацию о их, но нет информации об обновлении значений. В основном, пользовательский интерфейс Windows 8.1 все использует эти 'ThemeResource', поэтому теоретически, если вы определяете новые« Brush »с тем же значением« x: Key »в локальной области, то любой элемент управления пользовательского интерфейса с использованием этого ресурса должен использовать новое значение тоже. – Sheridan

+0

Люди, которые голосуют без комментариев, глупы, по моему мнению ... бессмысленно делать это, потому что они не имеют никакого смысла. Позаботьтесь о том, чтобы объяснить голосующий голос? – Sheridan

 Смежные вопросы

  • Нет связанных вопросов^_^