У меня есть приложение WPF для Windows. Мне нужно изменить цвет фона строки заголовка. Как я могу это сделать?
Изменение цвета фона строки заголовка WPF
comment
По теме: stackoverflow.com/questions/9978444/.
- person DuckMaestro   schedule 20.01.2015
comment
Возможный дубликат Как можно ли стилизовать рамку и строку заголовка окна в WPF?
- person StayOnTarget   schedule 24.07.2019
Ответы (3)
В WPF строка заголовка является частью неклиентской области, которую нельзя изменить с помощью класса окна WPF. Вам нужно управлять дескрипторами Win32 (если я правильно помню).
Эта статья может быть вам полезна: Пользовательское окно Chrome
person
Marcel B
schedule
16.08.2009
Ссылка на Custom Window Chrome в WPF теперь мертва
- person Lyle S.; 13.04.2019
@LyleS. ссылка работает нормально, может быть, на мгновение она не работает.
- person Sebastian; 22.10.2019
Ссылка не работает (снова), может относиться к этому ссылка
- person Yeshurun Kubi; 12.08.2020
Вот пример того, как этого добиться:
<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>
Handle Click Events in the code-behind.
Для 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;
}
person
Sushant Khurana
schedule
16.02.2011
ApplicationCommands.Close у меня не работал. Я использовал Application.Current.MainWindow.Close (); в команде. Также нет DoubleClick for Grid, я использовал MouseLeftButtonDown и использовал это. если (e.ClickCount == 2) {Максимизировать (); } else {Application.Current.MainWindow.DragMove (); }
- person Egemen Çiftci; 13.10.2017
Какое отношение имеет этот код к запрашиваемому цвету строки заголовка? Пожалуйста, объясни!
- person user74696c; 04.12.2019
Вы также можете создать окно без полей, а сами сделать границы и строку заголовка.
person
Thomas Levesque
schedule
16.08.2009
Но тогда вам нужно самостоятельно создать все функции панели задач (например, перемещение, увеличение / восстановление размера двойным щелчком, закрытие при двойном щелчке по значку, ...).
- person Marcel B; 16.08.2009
да ... но в этом нет ничего страшного, например, метод DragMove упрощает управление перемещением, а остальное проще простого;)
- person Thomas Levesque; 16.08.2009
я знаю ... но создание собственной панели заголовков кажется мне грязным трюком (помимо создания того же внешнего вида и ощущений - довольно сложная задача, imho)
- person Marcel B; 16.08.2009