web-dev-qa-db-ja.com

WPFタイトルバーの背景色の変更

WPF Windowsアプリケーションがあります。タイトルバーの背景色を変更する必要があります。どうやってやるの?

35
Emad Gabriel

WPFでは、タイトルバーは非クライアント領域の一部であり、WPFウィンドウクラスを介して変更することはできません。 Win32ハンドルを操作する必要があります(正しく覚えている場合)。
この記事は役に立つかもしれません: カスタムウィンドウChrome in WPF

20
Marcel B

これを実現する方法の例を次に示します。

    <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;
        }

これがお役に立てば幸いです。

23
Sushant Khurana

ボーダレスウィンドウを作成し、境界線とタイトルバーを自分で作成することもできます。

12
Thomas Levesque

次のサンプルを確認してください XAMLでウィンドウの外観をカスタマイズするWPF

このサンプルは、期待される機能をすべて提供しながら、非クライアント領域(タイトルバー、境界線、最大、最小、閉じるボタン)を含むウィンドウのスタイル/外観を完全にカスタマイズする方法を示します。

6
Abou-Emish