如何在WPF工具栏的下拉按钮中更改背景色?

如何在WPF工具栏的下拉按钮中更改背景色?,wpf,xaml,toolbar,dropdownbutton,Wpf,Xaml,Toolbar,Dropdownbutton,如何在WPF工具栏的下拉按钮中更改背景色 更新: XAML代码: <Window x:Class="WpfTutorialSamples.Common_interface_controls.ToolbarSample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/200

如何在WPF工具栏的下拉按钮中更改背景色

更新:

XAML代码:

<Window x:Class="WpfTutorialSamples.Common_interface_controls.ToolbarSample"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="ToolbarSample" Height="200" Width="300">
     <DockPanel>
        <ToolBarTray DockPanel.Dock="Top">
            <ToolBar>
                <Button Content="New" />
                <Button Content="Open" />
                <Button Content="Save" />
            </ToolBar>
            <ToolBar Background="GreenYellow">
                <Button Content="Cut" />
                <Button Content="Copy" />
                <Button Content="Paste" />
            </ToolBar>
        </ToolBarTray>
        <TextBox Text="Test" />
    </DockPanel>
 </Window>

用户可以在ToolBarAdv中自定义溢出按钮的颜色。可以通过编辑ToolBarAdv中的ToggleButton样式来实现。下面的代码演示了相同的情况

<Style TargetType="{x:Type ToggleButton}">



<!--Set Overflow Button backcolor -->



<Setter Property="Background" Value="Yellow" />



<Setter Property="BorderBrush" Value="Transparent"/>



<Setter Property="BorderThickness" Value="1"/>



<Setter Property="Foreground" Value="{DynamicResource {x:Static



SystemColors.ControlTextBrushKey}}"/>



<Setter Property="HorizontalContentAlignment" Value="Center"/>



<Setter Property="VerticalContentAlignment" Value="Stretch" />



<Setter Property="Padding" Value="1"/>



<Setter Property="Template">



<Setter.Value>



<ControlTemplate TargetType="{x:Type ToggleButton}">



<Border x:Name="Chrome" Background="{TemplateBinding Background}"



BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" CornerRadius="0,3,3,0">



<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"



Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"



SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"



VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>



</Border>



<ControlTemplate.Triggers>



<Trigger Property="IsEnabled" Value="false">





<Setter Property="Opacity" Value="0.3"/>



</Trigger>



</ControlTemplate.Triggers>



</ControlTemplate>



</Setter.Value>



</Setter>



</Style>
根据Makwana Prahlad的回答,我使用Visual Studio或Microsoft Blend编辑了ToggleButton的工具栏样式:

切换按钮鼠标切换:

切换按钮菜单:

切换按钮:

完整代码:


我们能看到xaml吗?@SatishPai工具栏的xaml代码是其他的,我去更新这个问题。好的,我明白了,我去试试Blend。谢谢
<SolidColorBrush x:Key="ToolBarButtonHover" Color="Green"/>

<Trigger Property="IsMouseOver" Value="true">
   <Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
</Trigger>
<SolidColorBrush x:Key="ToolBarSubMenuBackground" Color="GreenYellow"/>

<Border x:Name="ToolBarSubMenuBorder" BorderBrush="{StaticResource ToolBarMenuBorder}" BorderThickness="1" Background="{StaticResource ToolBarSubMenuBackground}" RenderOptions.ClearTypeHint="Enabled">
   .....
</Border>
<ToggleButton x:Name="OverflowButton" ClickMode="Press" FocusVisualStyle="{x:Null}" IsChecked="{Binding IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="{TemplateBinding HasOverflowItems}" Style="{StaticResource ToolBarHorizontalOverflowButtonStyle}" Background="GreenYellow"/>
<ToolBar Background="GreenYellow" Style="{DynamicResource ToolBarStyle1}">
   <ToolBar.Resources>
        <SolidColorBrush x:Key="ToolBarHorizontalBackground" Color="#FFEEF5FD"/>
        <SolidColorBrush x:Key="ToolBarToggleButtonVerticalBackground" Color="#FFEEF5FD"/>
        <SolidColorBrush x:Key="ToolBarButtonHover" Color="Green"/>
        <SolidColorBrush x:Key="ToolBarGripper" Color="#FF6D6D6D"/>
        <Style x:Key="ToolBarVerticalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
           <Setter Property="Background" Value="{StaticResource ToolBarToggleButtonVerticalBackground}"/>
           <Setter Property="MinHeight" Value="0"/>
           <Setter Property="MinWidth" Value="0"/>
           <Setter Property="Template">
             <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToggleButton}">
                   <Border x:Name="Bd" Background="{TemplateBinding Background}" CornerRadius="0,0,3,3" SnapsToDevicePixels="true">
                      <Canvas HorizontalAlignment="Right" Height="6" Margin="2,7,2,2" SnapsToDevicePixels="true" VerticalAlignment="Bottom" Width="7">
                         <Path Data="M 1.5 1 L 1.5 6" Stroke="White"/>
                         <Path Data="M 0.5 0 L 0.5 5" Stroke="{TemplateBinding Foreground}"/>
                         <Path Data="M 3.5 0.5 L 7 3.5 L 4 6.5 Z" Fill="White"/>
                         <Path Data="M 3 -0.5 L 6 2.5 L 3 5.5 Z" Fill="{TemplateBinding Foreground}"/>
                      </Canvas>
                   </Border>
                   <ControlTemplate.Triggers>
                      <Trigger Property="IsMouseOver" Value="true">
                         <Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
                      </Trigger>
                      <Trigger Property="IsKeyboardFocused" Value="true">
                          <Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
                      </Trigger>
                      <Trigger Property="IsEnabled" Value="false">
                           <Setter Property="Foreground" Value="{StaticResource ToolBarGripper}"/>
                      </Trigger>
                   </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
         </Setter>
         <Style.Triggers>
             <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
                 <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
              </DataTrigger>
          </Style.Triggers>
       </Style>
       <SolidColorBrush x:Key="ToolBarVerticalBackground" Color="#FFEEF5FD"/>
       <SolidColorBrush x:Key="ToolBarToggleButtonHorizontalBackground" Color="#FFEEF5FD"/>
       <Style x:Key="ToolBarHorizontalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
          <Setter Property="Background" Value="{StaticResource ToolBarToggleButtonHorizontalBackground}"/>
          <Setter Property="MinHeight" Value="0"/>
          <Setter Property="MinWidth" Value="0"/>
          <Setter Property="Template">
          <Setter.Value>
              <ControlTemplate TargetType="{x:Type ToggleButton}">
                  <Border x:Name="Bd" Background="{TemplateBinding Background}" CornerRadius="0,3,3,0" SnapsToDevicePixels="true">
                      <Canvas HorizontalAlignment="Right" Height="7" Margin="7,2,2,2" SnapsToDevicePixels="true" VerticalAlignment="Bottom" Width="6">
                          <Path Data="M 1 1.5 L 6 1.5" Stroke="White"/>
                          <Path Data="M 0 0.5 L 5 0.5" Stroke="{TemplateBinding Foreground}"/>
                          <Path Data="M 0.5 4 L 6.5 4 L 3.5 7 Z" Fill="White"/>
                          <Path Data="M -0.5 3 L 5.5 3 L 2.5 6 Z" Fill="{TemplateBinding Foreground}"/>
                       </Canvas>
                    </Border>
                    <ControlTemplate.Triggers>
                       <Trigger Property="IsMouseOver" Value="true">
                           <Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
                       </Trigger>
                       <Trigger Property="IsKeyboardFocused" Value="true">
                            <Setter Property="Background" TargetName="Bd" Value="{StaticResource ToolBarButtonHover}"/>
                       </Trigger>
                       <Trigger Property="IsEnabled" Value="false">
                             <Setter Property="Foreground" Value="{StaticResource ToolBarGripper}"/>
                        </Trigger>
                     </ControlTemplate.Triggers>
                   </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                 <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
                     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                  </DataTrigger>
            </Style.Triggers>
         </Style>
         <SolidColorBrush x:Key="ToolBarMenuBorder" Color="#FFB6BDC5"/>
         <SolidColorBrush x:Key="ToolBarSubMenuBackground" Color="GreenYellow"/>
            <Style x:Key="ToolBarThumbStyle" TargetType="{x:Type Thumb}">
               <Setter Property="Template">
                  <Setter.Value>
                      <ControlTemplate TargetType="{x:Type Thumb}">
                          <Border Background="Transparent" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
                                 <Rectangle>
                                      <Rectangle.Fill>
                                          <DrawingBrush TileMode="Tile" Viewbox="0,0,4,4" Viewport="0,0,4,4" ViewportUnits="Absolute" ViewboxUnits="Absolute">
                                               <DrawingBrush.Drawing>
                                                    <DrawingGroup>
                                                        <GeometryDrawing Brush="White" Geometry="M 1 1 L 1 3 L 3 3 L 3 1 z"/>
                                                        <GeometryDrawing Brush="{StaticResource ToolBarGripper}" Geometry="M 0 0 L 0 2 L 2 2 L 2 0 z"/>
                                                    </DrawingGroup>
                                                 </DrawingBrush.Drawing>
                                            </DrawingBrush>
                                        </Rectangle.Fill>
                                    </Rectangle>
                                </Border>
                                <ControlTemplate.Triggers>
                                     <Trigger Property="IsMouseOver" Value="true">
                                          <Setter Property="Cursor" Value="SizeAll"/>
                                     </Trigger>
                                 </ControlTemplate.Triggers>
                          </ControlTemplate>
                       </Setter.Value>
                  </Setter>
             </Style>
             <Style x:Key="ToolBarMainPanelBorderStyle" TargetType="{x:Type Border}">
                  <Setter Property="Margin" Value="0,0,11,0"/>
                  <Setter Property="CornerRadius" Value="3,3,3,3"/>
                  <Style.Triggers>
                       <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
                          <Setter Property="CornerRadius" Value="0,0,0,0"/>
                       </DataTrigger>
                    </Style.Triggers>
               </Style>
               <Style x:Key="ToolBarStyle1" TargetType="{x:Type ToolBar}">
                    <Setter Property="Background" Value="{StaticResource ToolBarHorizontalBackground}"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ToolBar}">
                                <Grid x:Name="Grid" Margin="3,1,1,1" SnapsToDevicePixels="true">
                                  <Grid x:Name="OverflowGrid" HorizontalAlignment="Right">
                                     <ToggleButton x:Name="OverflowButton" ClickMode="Press" FocusVisualStyle="{x:Null}" IsChecked="{Binding IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="{TemplateBinding HasOverflowItems}" Style="{StaticResource ToolBarHorizontalOverflowButtonStyle}" Background="GreenYellow"/>
                                            <Popup x:Name="OverflowPopup" AllowsTransparency="true" Focusable="false" IsOpen="{Binding IsOverflowOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom" StaysOpen="false">
                                                <Themes:SystemDropShadowChrome x:Name="Shdw" Color="Transparent">
                                                    <Border x:Name="ToolBarSubMenuBorder" BorderBrush="{StaticResource ToolBarMenuBorder}" BorderThickness="1" Background="{StaticResource ToolBarSubMenuBackground}" RenderOptions.ClearTypeHint="Enabled">
                                                        <ToolBarOverflowPanel x:Name="PART_ToolBarOverflowPanel" KeyboardNavigation.DirectionalNavigation="Cycle" FocusVisualStyle="{x:Null}" Focusable="true" Margin="2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.TabNavigation="Cycle" WrapWidth="200"/>
                                                    </Border>
                                                </Themes:SystemDropShadowChrome>
                                            </Popup>
                                        </Grid>
                                        <Border x:Name="MainPanelBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" Style="{StaticResource ToolBarMainPanelBorderStyle}">
                                            <DockPanel KeyboardNavigation.TabIndex="1" KeyboardNavigation.TabNavigation="Local">
                                                <Thumb x:Name="ToolBarThumb" Margin="-3,-1,0,0" Padding="6,5,1,6" Style="{StaticResource ToolBarThumbStyle}" Width="10"/>
                                                <ContentPresenter x:Name="ToolBarHeader" ContentSource="Header" HorizontalAlignment="Center" Margin="4,0,4,0" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
                                                <ToolBarPanel x:Name="PART_ToolBarPanel" IsItemsHost="true" Margin="0,1,2,2" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                            </DockPanel>
                                        </Border>
                                    </Grid>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsOverflowOpen" Value="true">
                                            <Setter Property="IsEnabled" TargetName="ToolBarThumb" Value="false"/>
                                        </Trigger>
                                        <Trigger Property="Header" Value="{x:Null}">
                                            <Setter Property="Visibility" TargetName="ToolBarHeader" Value="Collapsed"/>
                                        </Trigger>
                                        <Trigger Property="ToolBarTray.IsLocked" Value="true">
                                            <Setter Property="Visibility" TargetName="ToolBarThumb" Value="Collapsed"/>
                                        </Trigger>
                                        <Trigger Property="HasDropShadow" SourceName="OverflowPopup" Value="true">
                                            <Setter Property="Margin" TargetName="Shdw" Value="0,0,5,5"/>
                                            <Setter Property="SnapsToDevicePixels" TargetName="Shdw" Value="true"/>
                                            <Setter Property="Color" TargetName="Shdw" Value="#71000000"/>
                                        </Trigger>
                                        <Trigger Property="Orientation" Value="Vertical">
                                            <Setter Property="Margin" TargetName="Grid" Value="1,3,1,1"/>
                                            <Setter Property="Style" TargetName="OverflowButton" Value="{StaticResource ToolBarVerticalOverflowButtonStyle}"/>
                                            <Setter Property="Height" TargetName="ToolBarThumb" Value="10"/>
                                            <Setter Property="Width" TargetName="ToolBarThumb" Value="Auto"/>
                                            <Setter Property="Margin" TargetName="ToolBarThumb" Value="-1,-3,0,0"/>
                                            <Setter Property="Padding" TargetName="ToolBarThumb" Value="5,6,6,1"/>
                                            <Setter Property="Margin" TargetName="ToolBarHeader" Value="0,0,0,4"/>
                                            <Setter Property="Margin" TargetName="PART_ToolBarPanel" Value="1,0,2,2"/>
                                            <Setter Property="DockPanel.Dock" TargetName="ToolBarThumb" Value="Top"/>
                                            <Setter Property="DockPanel.Dock" TargetName="ToolBarHeader" Value="Top"/>
                                            <Setter Property="HorizontalAlignment" TargetName="OverflowGrid" Value="Stretch"/>
                                            <Setter Property="VerticalAlignment" TargetName="OverflowGrid" Value="Bottom"/>
                                            <Setter Property="Placement" TargetName="OverflowPopup" Value="Right"/>
                                            <Setter Property="Margin" TargetName="MainPanelBorder" Value="0,0,0,11"/>
                                            <Setter Property="Background" Value="{StaticResource ToolBarVerticalBackground}"/>
                                        </Trigger>
                                        <Trigger Property="IsEnabled" Value="false">
                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Source={x:Static SystemParameters.HighContrast}}" Value="true">
                                <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </ToolBar.Resources>
                <Button Content="Cut" />
                <Button Content="Copy" />
                <Button Content="Paste" />
            </ToolBar>