52

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

4

4 に答える 4

25

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

于 2009-08-16T00:03:20.870 に答える
25

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

  <DockPanel HorizontalAlignment="Stretch"
           VerticalAlignment="Stretch"
           LastChildFill="True">

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

コード ビハインドでクリック イベントを処理します。

マウスダウンの場合 -

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;
}
于 2011-02-16T09:18:12.780 に答える
16

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

于 2009-08-16T00:24:22.017 に答える