Как в ToolBar изменить цвет правой полосы?

341
21 декабря 2016, 01:33

Как в ToolBar изменить цвет правой полосы?

В предложенном https://msdn.microsoft.com/ru-ru/library/aa970772(v=vs.85).aspx типа не соответствует ToolBar (TargetType="{x:Type ToggleButton}">).

Если его заменить в предложенном ToolBarOverflowButtonStyle https://msdn.microsoft.com/ru-ru/library/aa970772(v=vs.85).aspx на {x:Type ToolBar}" то программа не запускается.

Если сделять так то угол не изменится. Но программа при этом работает:

<ToolBar Name="toolbar1" DockPanel.Dock="Top"
                     Style="{DynamicResource AAA}"
                >

.

<Style x:Key="AAA" TargetType="{x:Type ToolBar}">
        <Setter Property="Foreground" Value="#FFFFFF" />
        <Setter Property="Background" Value="#FF0F0F0F" />
    </Style>

Но если добавить:

<Setter Property="OverridesDefaultStyle" Value="true"

После этого панель не отображается. Если к ней добавить высоту то она будет пустой без кнопок.

<Style x:Key="ToolBarOverflowButtonStyle" TargetType="{x:Type ToolBar}">
  <Setter Property="OverridesDefaultStyle" Value="true"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ToolBar}">
        <Border Name="Bd"
          CornerRadius="0,3,3,0"
          Background="Transparent"
          SnapsToDevicePixels="true">
          <Grid>
            <Path Name="Arrow"
              Fill="Black"
              VerticalAlignment="Bottom"
              Margin="2,3"
              Data="M -0.5 3 L 5.5 3 L 2.5 6 Z"/>
            <ContentPresenter/>
          </Grid>
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsMouseOver" Value="true">
            <Setter TargetName="Bd" Property="Background" Value="{StaticResource DarkBrush}"/>
          </Trigger>
          <Trigger Property="IsKeyboardFocused" Value="true">
            <Setter TargetName="Bd" Property="Background" Value="{StaticResource DarkBrush}"/>
          </Trigger>
          <Trigger Property="IsChecked" Value="true">
            <Setter TargetName="Bd" Property="Background" Value="{StaticResource DarkBrush}"/>
          </Trigger>
          <Trigger Property="IsEnabled" Value="false">
            <Setter TargetName="Arrow" Property="Fill" Value="#AAA"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>
Answer 1

Проще всего, наверное, заставить Visual Studio сгенерировать для вас стиль с шаблоном.

Как это делать, описано в этом ответе. Имея шаблон, вы находите в нём код, отображающий ваш визуальный элемент. (Это легко сделать: когда вы выделяете элемент в исходном коде, соответствующий визуальный элемент подсвечивается в дизайнере.)

На моей машине это такой элемент:

<ToggleButton x:Name="OverflowButton" ClickMode="Press" FocusVisualStyle="{x:Null}"
              IsChecked="{Binding IsOverflowOpen, Mode=TwoWay,
                      RelativeSource={RelativeSource TemplatedParent}}"
              IsEnabled="{TemplateBinding HasOverflowItems}"
              Style="{StaticResource ToolBarHorizontalOverflowButtonStyle}"/>

(я немного переформатировал для лучшего отображения).

Мы видим, что за визуальное оформление отвечает стиль ToolBarHorizontalOverflowButtonStyle. Находим его:

<Style x:Key="ToolBarHorizontalOverflowButtonStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="{StaticResource ToolBarToggleButtonHorizontalBackground}"/>

и сразу над ним

<SolidColorBrush x:Key="ToolBarToggleButtonHorizontalBackground" Color="#FFEEF5FD"/>

Меняем на

<SolidColorBrush x:Key="ToolBarToggleButtonHorizontalBackground" Color="Red"/>

и получаем:

Answer 2

Для этого вам следует переопределить шаблон. Пример стандартного шаблона ToolBar доступен по этой ссылке. Если я правильно помню, вам надо работать с со стилем "ToolBarOverflowButtonStyle".

READ ALSO
Запись строк в файл при помощи StreamWriter

Запись строк в файл при помощи StreamWriter

Каким образом при помощи StreamWriter можно записать символы в определённую строку? Например, так выглядит файлНужно "Василий" записать в первую...

357
Не работает событие нажатия в C# [требует правки]

Не работает событие нажатия в C# [требует правки]

Хай гайсыУ меня тут проблема вышла

329
Эквивалент Blank App (XAML) из Visual Studio 2012 в Visual Studio 2015

Эквивалент Blank App (XAML) из Visual Studio 2012 в Visual Studio 2015

Решил начать изучать C# по книге "Изучаем C#" 3-е издание ЭСтиллмен, Д

665
Ссылка на проект Windows Phone [требует правки]

Ссылка на проект Windows Phone [требует правки]

Добрый день , есть ли возможность задать ссылку на проект windows Phone

344