WPF Windowsアプリケーションがあります。タイトルバーの背景色を変更する必要があります。どうやってやるの?
WPFでは、タイトルバーは非クライアント領域の一部であり、WPFウィンドウクラスを介して変更することはできません。 Win32ハンドルを操作する必要があります(正しく覚えている場合)。
この記事は役に立つかもしれません: カスタムウィンドウChrome in WPF 。
これを実現する方法の例を次に示します。
<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;
}
これがお役に立てば幸いです。
ボーダレスウィンドウを作成し、境界線とタイトルバーを自分で作成することもできます。
次のサンプルを確認してください XAMLでウィンドウの外観をカスタマイズするWPF
このサンプルは、期待される機能をすべて提供しながら、非クライアント領域(タイトルバー、境界線、最大、最小、閉じるボタン)を含むウィンドウのスタイル/外観を完全にカスタマイズする方法を示します。