Подтвердить что ты не робот

Изменение цвета фона заголовка WPF

У меня есть приложение WPF Windows. Мне нужно изменить цвет фона в строке заголовка. Как я могу это сделать?

4b9b3361

Ответ 1

В WPF заголовок является частью неклиентской области, которая не может быть изменена через класс окон WPF. Вам нужно манипулировать дескрипторами Win32 (если я правильно помню).
Эта статья может быть вам полезна: Пользовательское окно Chrome в WPF.

Ответ 2

Вот пример того, как этого добиться:

    <Grid DockPanel.Dock="Right"
      HorizontalAlignment="Right">

        <StackPanel Orientation="Horizontal"
                HorizontalAlignment="Right"
                VerticalAlignment="Center">

            <Button x:Name="MinimizeButton"
                KeyboardNavigation.IsTabStop="False"
                Click="MinimizeWindow"
                Style="{StaticResource MinimizeButton}" 
                Template="{StaticResource MinimizeButtonControlTemplate}" />

            <Button x:Name="MaximizeButton"
                KeyboardNavigation.IsTabStop="False"
                Click="MaximizeClick"
                Style="{DynamicResource MaximizeButton}" 
                Template="{DynamicResource MaximizeButtonControlTemplate}" />

            <Button x:Name="CloseButton"
                KeyboardNavigation.IsTabStop="False"
                Command="{Binding ApplicationCommands.Close}"
                Style="{DynamicResource CloseButton}" 
                Template="{DynamicResource CloseButtonControlTemplate}"/>

        </StackPanel>
    </Grid>
</DockPanel>

Обрабатывать события клика в коде.

Для MouseDown -

App.Current.MainWindow.DragMove();

Для кнопки свертывания -

App.Current.MainWindow.WindowState = WindowState.Minimized;

Для DoubleClick и MaximizeClick

        if (App.Current.MainWindow.WindowState == WindowState.Maximized)
        {
            App.Current.MainWindow.WindowState = WindowState.Normal;
        }
        else if (App.Current.MainWindow.WindowState == WindowState.Normal)
        {
            App.Current.MainWindow.WindowState = WindowState.Maximized;
        }

Надеюсь, это поможет.

Ответ 3

Вы также можете создать окно без полей и сами сделать границы и заголовок

Ответ 4

Проверьте следующий пример WPF, настраивающий внешний вид окна в XAML

В этом примере показано, как полностью настроить стиль/внешний вид окна, в том числе неклиентские области: панель заголовка, границы, максимальная, минимальная и закрывающая кнопки, при этом все еще сохраняя ожидаемую функциональность.