2016-03-31 109 views
0

我試圖修復WPF應用程序寫入的問題,並且似乎在Windows XP和Windows 7上工作。在Windows 10上,我們遇到了未選中的選項卡消失的問題。未選中的選項卡消失

的主窗口已應用其的TabItems自定義樣式一個TabControl:

<TabItem 
     x:Name="dashboardTab" 
     Header="Dashboard" 
     Style="{StaticResource mainTabStyle}" 
     > 
    <local:DashboardControl x:Name="DashboardControl"/> 
</TabItem> 

風格:

<Style x:Key="mainTabStyle" TargetType="{x:Type TabItem}"> 
    <Setter Property="Margin" Value="10,5,0,0" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type TabItem}"> 
     <Grid x:Name="ContentWrapper"> 
      <ContentPresenter x:Name="ContentSite" VerticalAlignment="Bottom" HorizontalAlignment="Center" ContentSource="Header" Margin="12,2,12,2" Width="150" RecognizesAccessKey="True" /> 
     </Grid> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
      <Setter TargetName="ContentWrapper" Property="Background" Value="AliceBlue" /> 
      <Setter TargetName="ContentSite" Property="TextBlock.FontWeight" Value="Medium" /> 
      <Setter TargetName="ContentSite" Property="TextBlock.Margin" Value="12,2,12,8" /> 
      <Setter TargetName="ContentSite" Property="TextBlock.FontSize" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=FontSize, Converter={StaticResource mathConverter}, ConverterParameter=5}" /> 
      </Trigger> 
      <MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsSelected" Value="False" /> 
       <Condition Property="IsMouseOver" Value="True" /> 
      </MultiTrigger.Conditions> 
      <Setter TargetName="ContentWrapper" Property="TextBlock.Foreground" Value="Black" /> 
      <Setter TargetName="ContentWrapper" Property="Background"> 
       <Setter.Value> 
       <SolidColorBrush Color="White" Opacity="0.5" /> 
       </Setter.Value> 
      </Setter> 
      </MultiTrigger> 
      <MultiTrigger> 
      <MultiTrigger.Conditions> 
       <Condition Property="IsSelected" Value="False" /> 
       <Condition Property="IsMouseOver" Value="False" /> 
      </MultiTrigger.Conditions> 
      <Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="White" /> 
      <Setter TargetName="ContentWrapper" Property="Background"> 
       <Setter.Value> 
       <SolidColorBrush Color="White" Opacity="0.15" /> 
       </Setter.Value> 
      </Setter> 
      </MultiTrigger> 
     </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

的想法是改變標籤項目頭了一下看起來不像標籤,更像是一排選擇按鈕。

如果我從TabItems中刪除樣式,我會看到一組完全普通的標籤頁眉。如果我把它留在原地,在Windows 7下它工作正常。所選標籤以淺藍色背景突出顯示。但是,在Windows 10中,未選中的選項卡是不可見的。前景文字似乎是白色的。

不幸的是,我們的WPF專業知識已經走出了門,我試圖解決這個問題。我知道它的這種風格控制着可見度。正如我所說,如果我刪除它,我會得到正常的標籤頁眉。如果我將它放在原處並將背景色從「AliceBlue」更改爲「紅色」,則會看到更改。

我的問題:如何更改此樣式以將指定的前景色應用於未選中的標籤的文本塊?

+1

在過去的多次觸發,當IsSelected和IsMouseOver是假的,你正在設置TextBlock.Foreground屬性白 –

+0

@GordonAllocman可能還會把這個作爲答案,因爲他將前景和背景設置爲白色.. :) –

回答

1

在過去的多觸發,您正在設置TextBlock.Foreground屬性爲白色時IsSelected和IsMouseOver是假

這條線就在這裏<Setter TargetName="ContentSite" Property="TextBlock.Foreground" Value="White" />

,你也有背景顏色設置爲白色在下面的二傳手(我不知道不透明度是什麼)

<Setter TargetName="ContentWrapper" Property="Background"> 
       <Setter.Value> 
       <SolidColorBrush Color="White" Opacity="0.15" /> 
       </Setter.Value> 
      </Setter> 
+0

_I'm_不將背景和前景設置爲白色,我從此繼承的這個人做過。在這一點上,我只是開始弄清楚所有這一切。現在你已經指出了,我可以看到他在做什麼。現在我想知道爲什麼。謝謝您的幫助。 –

+0

@JeffDege來自_you_我主要是指代碼。很高興我能幫上忙 –