2013-04-05 3 views
1

Как изменить фон отмеченного элемента (часть панели инструментов, в xaml)? marked elementИзменить фон части панели инструментов

<ToolBar Grid.Column="1" x:Name="AdditionalModuleButtonsStackPanel" Background="{x:Null}"/> 

Я даже не знаю, как называется этот элемент. Мне нужно сделать этот фон прозрачным.

+0

Можете ли вы предоставить какой-либо код? – Dom

+0

Это очень просто: '' – 2013-04-05 16:18:27

ответ

2

Согласно this answer,

Кнопка перелива, к сожалению, имеет фиксированный фон.

Это значит, что вы должны указать весь шаблон. Вот это стиль панели инструментов (долго я знаю ...), убедитесь, чтобы включить его в свой XAML (я добавил его к моему Window.Resources):

РЕСУРС:

<Window.Resources> 
     <LinearGradientBrush x:Key="ToolBarHorizontalBackground" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#E2E0DB" Offset="0"/> 
      <GradientStop Color="#EAE8E4" Offset="0.5"/> 
      <GradientStop Color="#D5D2CA" Offset="0.9"/> 
      <GradientStop Color="#DBD8D1" Offset="1"/> 
     </LinearGradientBrush> 
     <LinearGradientBrush x:Key="ToolBarToggleButtonVerticalBackground" EndPoint="1,0" StartPoint="0,0"> 
      <GradientStop Color="#E6E6E6" Offset="0"/> 
      <GradientStop Color="#D2D2D2" Offset="0.5"/> 
      <GradientStop Color="#808080" Offset="1"/> 
     </LinearGradientBrush> 
     <SolidColorBrush x:Key="ToolBarButtonHover" Color="#B6BDD2"/> 
     <SolidColorBrush x:Key="ToolBarGripper" Color="#A0A0A0"/> 
     <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> 
     <LinearGradientBrush x:Key="ToolBarVerticalBackground" EndPoint="1,0" StartPoint="0,0"> 
      <GradientStop Color="#E2E0DB" Offset="0"/> 
      <GradientStop Color="#EAE8E4" Offset="0.5"/> 
      <GradientStop Color="#D5D2CA" Offset="0.9"/> 
      <GradientStop Color="#DBD8D1" Offset="1"/> 
     </LinearGradientBrush> 
     <LinearGradientBrush x:Key="ToolBarToggleButtonHorizontalBackground" EndPoint="0,1" StartPoint="0,0"> 
      <GradientStop Color="#E6E6E6" Offset="0"/> 
      <GradientStop Color="#D2D2D2" Offset="0.5"/> 
      <GradientStop Color="#808080" Offset="1"/> 
     </LinearGradientBrush> 
     <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="#666666"/> 
     <SolidColorBrush x:Key="ToolBarSubMenuBackground" Color="#F9F8F7"/> 
     <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" Background="Transparent" ClickMode="Press" FocusVisualStyle="{x:Null}" IsChecked="{Binding IsOverflowOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" IsEnabled="{TemplateBinding HasOverflowItems}" Style="{StaticResource ToolBarHorizontalOverflowButtonStyle}"/> 
           <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> 
    </Window.Resources> 

Затем вы добавляете например:

<Grid> 
    <ToolBar x:Name="AdditionalModuleButtonsStackPanel" Background="{x:Null}" Style="{DynamicResource ToolBarStyle1}" /> 
</Grid> 
+0

Спасибо. Мне нужно каким-то образом изменить его, потому что кнопка переполнения не работает после применения этого стиля. – 2013-04-05 19:50:29

+1

Хм, я просто попробовал, и, похоже, он работает ... Попробуйте изменить ширину панели инструментов так, чтобы она ... 'Width = 30', поэтому все элементы обязательно переполнятся. Скажите, если меню переполнения все еще не работает. – Dom

+0

К сожалению, это не работает. Тем не менее, я создал настраиваемый элемент управления для моделирования аналогичного поведения. Он ведет себя как WrapPanel, однако он показывает только первую строку с UIElements и предоставляет остальную часть (переполненную) как свойство и срабатывает событие. Когда событие запущено, я создаю ContextMenu, где помещаются переполненные элементы. Работает как chram - и я полностью контролирую, как он выглядит. – 2013-04-06 14:01:03

Смежные вопросы