2014-01-09 5 views
0

나는 mouseover를 사용하여 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

죄송하지만 트리거는 윈도우에서 지원되지 않습니다 8 RT 업로드 한 xaml..the 코드는 WPF의이어야합니다 xaml..and 아래

<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> 

처럼 comboboxitem 스타일을 변경하지 않고이 수 콤보 상자의 리소스에 색을 저장해야합니다. 배경 및 테두리 브러시에 색을 직접 적용 할 수 있습니다. 리소스로 저장 했으므로 리소스가 절약되었습니다.

+0

감사합니다. 완벽하게 작동합니다! – user1632298

+0

당신은 환영합니다! –

+0

당신은 말했다 * 트리거는 Windows 8 xaml *에서 지원되지 않습니다. 그것이 틀렸기 때문에 이것을 분명히 해두 자. 트리거는 Windows 8 RT에서만 지원되지 않습니다. – Sheridan

0

나는 아직 사용하지 않은,하지만 난 윈도우 8에, 당신은 당신이 이전 SystemColors.HighlightBrushKey 하나처럼 단순히 새로운 Brush를 재정 의하여 귀하의 요구 사항을 충족 할 수 있다고 생각 :

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

또한 달려있다 어둡거나 밝은 테마를 사용하든 상관없이 MSDN의 ComboBoxItem styles and templates 페이지에서 새로운 Brush es의 전체 목록을 찾을 수 있습니다.

+0

그냥 추가하면됩니다. < /ComboBox.Resources> – user1632298

+0

작동하지 않습니까? 알다시피, 나는이 주제에 대해 좋은 검색을했고, 놀랍게도 이것에 대한 정보는 거의 없다. 새로운'Brush'는 새로운 [ThemeResource' 마크 업 확장] (http://msdn.microsoft.com/en-us/library/windows/apps/dn263118.aspx)로 선언되며이 링크 된 페이지는 값을 업데이트하는 정보는 없습니다. 기본적으로 Windows 8.1 UI 컨트롤은 모두이 'ThemeResource'를 사용합니다. 따라서 이론적으로 로컬 범위에서 동일한'x : Key'값으로 새로운'Brush'를 정의하면 해당 리소스를 사용하는 모든 UI 컨트롤은 새로운 가치. – Sheridan

+0

의견을 남기지 않고 아래로 투표 한 사람들은 내 생각에 어리 석다. 아무런 의미가 없기 때문에 그렇게하는 것은 의미가 없다. 유권자의 신분을 설명하는주의 사항? – Sheridan

관련 문제