2016-09-30 3 views
0

MahAppsMetro을 사용 중이며 TabControl입니다. 실제로 비활성 탭에는 회색 전경색이 있어야하며 MouseOver에서 검정색으로 표시되어야합니다. TabItems (MahAppsMetro)의 기본 색상 변경

<Controls:MetroWindow x:Name="MW_Window" x:Class="MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
Title="Example" Icon="/Example;component/pics/Example.ico" WindowStyle="ThreeDBorderWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="665.5" Width="759" ResizeMode="CanMinimize" NonActiveWindowTitleBrush="{DynamicResource AccentColorBrush}" NonActiveGlowBrush="{DynamicResource AccentColorBrush}" NonActiveBorderBrush="{DynamicResource AccentColorBrush}"> 
    <Grid> 
     <Controls:MetroAnimatedSingleRowTabControl Name="TabControl1" Margin="0,0,0,0"> 
      <TabItem Header="Dashboard" Name="Dashboard"> 
       <Grid Margin="0,0,0,0"> 
        <RadioButton HorizontalAlignment="Left" Margin="87,114,0,0" Name="RadioButton1" VerticalAlignment="Top" IsChecked="True" Width="64" Content="" VerticalContentAlignment="Center" /> 
        <RadioButton HorizontalAlignment="Left" Margin="87,138,0,0" Name="RadioButton2" VerticalAlignment="Top" Width="64" /> 
        <RadioButton HorizontalAlignment="Left" Margin="87,162,0,0" Name="RadioButton3" VerticalAlignment="Top" Width="64" /> 
        <RadioButton HorizontalAlignment="Left" Margin="86,185,0,0" Name="RadioButton4" VerticalAlignment="Top" Width="64" /> 
       </Grid> 
      </TabItem> 
      <TabItem Header="Options" Name="Options"> 
       <Grid Margin="0,0,0,0" > 

       </Grid> 
      </TabItem> 
      <TabItem Header="Info" Name="Info"> 
       <Grid Margin="0,0,0,0"> 

       </Grid> 
      </TabItem> 
      <TabItem Header="Admin" Name="Admin"> 
       <Grid Margin="0,0,0,0" > 

       </Grid> 
      </TabItem> 
      <TabItem Header="FM" Name="SuperAdmin"> 
       <Grid Margin="0,0,0,0" > 

       </Grid> 
      </TabItem> 
     </Controls:MetroAnimatedSingleRowTabControl> 
    </Grid> 
</Controls:MetroWindow> 

내가 내 자신의 XAML 파일 사용 (복사 한 일을하고 기본 - 색상 변경)하지만 나머지는 동일합니다 : 어떻게 든 그들은 내내 검은 색입니다 .. 이 내가있는 TabControl을 사용하는 방법입니다 .

내가 지금 다시 회색으로 나의 선택되지 않은 tabitems의 기본 전경 색을 설정하는 방법

How it looks now

How it should be (Info is black because of MouseOver)

?

편집 :

내가 응용 프로그램 MergedDictionaries에서 BaseLight.xaml을 제거 - 다음 더 이상 작업이 없었다 - 다시 일하고 다시 추가 한 후 : 문제를 발견 할 수 있었다.

전 :

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
      <!-- Accent and AppTheme setting --> 
      <ResourceDictionary Source="LiquidStyle_Classic.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

후 :

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
      <!-- Accent and AppTheme setting --> 
      <ResourceDictionary Source="LiquidStyle_Classic.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 
+0

를 내가 자식 소스 코드에서 전체 스타일 템플릿을 복사 한 후 내 응용 프로그램에서 해당 스타일을 사용하여 변경 끝났다. 그래도 더 좋은 방법이있을 수 있습니다. – Joe

답변

0

시도가 사용자 정의 트리거 TabItem의 스타일을 정의합니다. 그리드에 다음과 같은 마크 업을 추가 :

<Grid.Resources> 
     <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}"> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="MouseEnter"> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" 
              From="Gray" To="Black" Duration="0:0:1"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
       <EventTrigger RoutedEvent="MouseLeave"> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimation Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" 
              From="Black" To="Gray" Duration="0:0:1"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
+0

잘이 하나의 TabItem MouseOver 때 모든 검정 - 다른 모든 tabitems 및 심지어 탭 항목의 눈금에있는 레이블을 나타납니다. –

+0

나를 위해 그것을 작동합니다. 나는 이미 그것을 테스트했다. 그러나 전체 마크 업을 표시 할 수 있습니다. 아마도 이상한 일이 일어날 수 있습니다. – bakala12

+0

전체 마크 업이 너무 많을 것이라고 생각합니다. Dashboard tabitem에 RadioButton을 추가했습니다. 예를 들어, 해당 내용이 변경됩니다. –