繁体   English   中英

如何修复ZD7EFA19FBE7D3972FD5ADB60242223D74Z Z30555DDD731D79EAA7189A62F36724E09FZ TAB ZEEEEEEEEEEE0168BE69BBE69B854C20621FC621FC6F01CCC3FC3FC3FC3FC3FCORDES pRODECT tab PRORACKER tab COLRATE?

[英]How to fix C# WPF Tab Hover Color to NOT change color when Tab is set to background custom color?

在我的 Visual Studio 2010 C# WPF 应用程序中,我有 7 个选项卡与交替的 colors 这是我的客户需要的。 他们不喜欢用鼠标悬停在选项卡上并更改选项卡的背景颜色,即使选项卡没有被选中。

Dialog 的部分 WPF XAML 代码如下所示:

 .
 .
 .
 <TabControl Width="auto" Height="auto" Name="MyTabs" SelectionChanged="MyTabs_SelectionChanged">
    <TabItem Header="Tab 1" >
       <TabItem.Resources>
          <Style TargetType="{x:Type TabItem}">
             <Setter Property="Background" Value="LightGreen"></Setter>
          </Style>
       </TabItem.Resources>
 .
 .
 . Tab Contents
 .
 .
 .
    </TabItem>
 .
 .
 .
    <TabItem Header="Tab 2" >
       <TabItem.Resources>
          <Style TargetType="{x:Type TabItem}">
             <Setter Property="Background" Value="LightBlue"></Setter>
          </Style>
       </TabItem.Resources>
 .
 .
 . Tab Contents
 .
 .
 .
    </TabItem>
 .
 .
 .
 </TabControl>

如果我不更改选项卡背景 colors,则没有问题。 但是,对于最终用户而言,具有颜色的选项卡有助于特定应用程序。

我的问题是,当我需要为 WPF 选项卡设置自定义背景 colors 时,如何不使用鼠标将鼠标悬停在选项卡上时更改选项卡颜色?

“您的帖子似乎包含未正确格式化为代码的代码。请使用代码工具栏按钮或 CTRL+K 键盘快捷键将所有代码缩进 4 个空格。有关更多编辑帮助,请单击 [?] 工具栏图标。”

尝试发布解决方案时。 已多次尝试在此处粘贴代码示例。

我的修复发布在这里:(不需要幕后代码!) https://docs.microsoft.com/en-us/answers/questions/29021/visual-studio-2010-how-to-fix-c-wpf -tab-hover-colo.html?childToView=29528#answer-29528

<Window x:Class="WPF_Tab_Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow"
        Width="800"
        Height="600"
        >
   <Window.Resources>
      <Style x:Key="tabItemStyle" TargetType="{x:Type TabItem}">
         <Setter Property="FocusVisualStyle">
            <Setter.Value>
               <Style>
                  <Setter Property="Control.Template">
                     <Setter.Value>
                        <ControlTemplate>
                           <Rectangle Margin="2" SnapsToDevicePixels="True" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
                        </ControlTemplate>
                     </Setter.Value>
                  </Setter>
               </Style>
            </Setter.Value>
         </Setter>
         <Setter Property="Foreground" Value="Black"/>
         <Setter Property="Background">
            <Setter.Value>
               <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                  <GradientStop Color="#FFF0F0F0" Offset="0"/>
                  <GradientStop Color="#FFE5E5E5" Offset="1"/>
               </LinearGradientBrush>
            </Setter.Value>
         </Setter>
         <Setter Property="BorderBrush" Value="#FFACACAC"/>
         <Setter Property="Margin" Value="0"/>
         <Setter Property="Padding" Value="6,2"/>
         <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
         <Setter Property="VerticalContentAlignment" Value="Stretch"/>
         <Setter Property="Template">
            <Setter.Value>
               <ControlTemplate TargetType="{x:Type TabItem}">
                  <Grid x:Name="templateRoot" SnapsToDevicePixels="True">
                     <Border x:Name="mainBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1,1,1,0" Background="{TemplateBinding Background}" Margin="0">
                        <Border x:Name="innerBorder" BorderBrush="#FFACACAC" BorderThickness="1,1,1,0" Background="White" Margin="-1" Opacity="0"/>
                     </Border>
                     <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}"/>
                  </Grid>
                  <ControlTemplate.Triggers>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Left"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
                        <Setter Property="Background" TargetName="mainBorder" Value="#FFF0F0F0"/>
                        <Setter Property="BorderBrush" TargetName="mainBorder" Value="#FFD9D9D9"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Bottom"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
                        <Setter Property="Background" TargetName="mainBorder" Value="#FFF0F0F0"/>
                        <Setter Property="BorderBrush" TargetName="mainBorder" Value="#FFD9D9D9"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Right"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
                        <Setter Property="Background" TargetName="mainBorder" Value="#FFF0F0F0"/>
                        <Setter Property="BorderBrush" TargetName="mainBorder" Value="#FFD9D9D9"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Top"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
                        <Setter Property="Background" TargetName="mainBorder" Value="#FFF0F0F0"/>
                        <Setter Property="BorderBrush" TargetName="mainBorder" Value="#FFD9D9D9"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Left"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Left"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Panel.ZIndex" Value="1"/>
                        <Setter Property="Margin" Value="-2,-2,0,-2"/>
                        <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,0,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,0,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Bottom"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Bottom"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Panel.ZIndex" Value="1"/>
                        <Setter Property="Margin" Value="-2,0,-2,-2"/>
                        <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,0,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,0,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Right"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Right"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Panel.ZIndex" Value="1"/>
                        <Setter Property="Margin" Value="0,-2,-2,-2"/>
                        <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,1,1,1"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,1,1,1"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Top"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
                     </MultiDataTrigger>
                     <MultiDataTrigger>
                        <MultiDataTrigger.Conditions>
                           <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
                           <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type TabControl}}}" Value="Top"/>
                        </MultiDataTrigger.Conditions>
                        <Setter Property="Panel.ZIndex" Value="1"/>
                        <Setter Property="Margin" Value="-2,-2,-2,0"/>
                        <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
                        <Setter Property="BorderThickness" TargetName="innerBorder" Value="1,1,1,0"/>
                        <Setter Property="BorderThickness" TargetName="mainBorder" Value="1,1,1,0"/>
                     </MultiDataTrigger>
                  </ControlTemplate.Triggers>
               </ControlTemplate>
            </Setter.Value>
         </Setter>
      </Style>
   </Window.Resources>

   <Grid>
      <TabControl Width="auto" Height="auto" Name="MyTabs" >
         <TabItem Header="Tab 1 - No Hover Color Change" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource  tabItemStyle}">
                  <Setter Property="Background" Value="LightGreen"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 2 - No Hover Color Change" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource  tabItemStyle}">
                  <Setter Property="Background" Value="LightBlue"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 3 - No Hover Color Change" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource  tabItemStyle}">
                  <Setter Property="Background" Value="LightGreen"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 4 - No Hover Color Change" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource tabItemStyle}">
                  <Setter Property="Background" Value="LightBlue"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 5 - Hover Color Changes" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}">
                  <Setter Property="Background" Value="LightGreen"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 6 - Hover Color Changes" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}">
                  <Setter Property="Background" Value="LightBlue"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 7 - No Hover Color Change" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource tabItemStyle}">
                  <Setter Property="Background" Value="LightGray"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
         <TabItem Header="Tab 8 - Hover Color Changes" >
            <TabItem.Resources>
               <Style TargetType="{x:Type TabItem}">
                  <Setter Property="Background" Value="LightGray"></Setter>
               </Style>
            </TabItem.Resources>
         </TabItem>
      </TabControl>   
   </Grid>
</Window>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM