9

最大化されたときにChromeブラウザーを見ると、ウィンドウの上部にタブヘッダーがあります。似たようなことはできますか?

4

2 に答える 2

34

もちろんですが、これらのボタンは自分で作り直す必要があります(難しくはありませんが、心配しないでください)。

MainWindow.xamlで:

<Window ...
        Title="" Height="Auto" Width="Auto" Icon="../Resources/MyIcon.ico" 
        ResizeMode="NoResize" WindowStartupLocation="CenterScreen" 
        WindowStyle="None" AllowsTransparency="True" Background="Transparent"
        ...>
    <Canvas>
       <Button /> <!-- Close -->
       <Button /> <!-- Minimize -->
       <Button /> <!-- Maximize -->
       <TabControl>
           ...
       </TabControl>
    </Canvas>
</Window>

次に、ボタンとTabControlをキャンバスに希望どおりに配置し、ルックアンドフィールをカスタマイズする必要があります。

編集:.NET4.5で閉じる/最大化/最小化するための組み込みコマンドSystemCommands.CloseWindowCommandSystemCommands.MaximizeWindowCommand//SystemCommands.MinimizeWindowCommand

したがって、.NET 4.5を使用している場合は、次のことができます。

<Window ...
        Title="" Height="Auto" Width="Auto" Icon="../Resources/MyIcon.ico" 
        ResizeMode="NoResize" WindowStartupLocation="CenterScreen" 
        WindowStyle="None" AllowsTransparency="True" Background="Transparent"
        ...>
    <Window.CommandBindings>
        <CommandBinding Command="{x:Static SystemCommands.CloseWindowCommand}" CanExecute="CommandBinding_CanExecute_1" Executed="CommandBinding_Executed_1" />
        <CommandBinding Command="{x:Static SystemCommands.MaximizeWindowCommand}" CanExecute="CommandBinding_CanExecute_1" Executed="CommandBinding_Executed_2" />
        <CommandBinding Command="{x:Static SystemCommands.MinimizeWindowCommand}" CanExecute="CommandBinding_CanExecute_1" Executed="CommandBinding_Executed_3" />
    </Window.CommandBindings>
    <Canvas>
       <Button Command="{x:Static SystemCommands.CloseWindowCommand}" Content="Close" />
       <Button Command="{x:Static SystemCommands.MaximizeWindowCommand}" Content="Maximize" />
       <Button Command="{x:Static SystemCommands.MinimizeWindowCommand}" Content="Minimize" />
       <TabControl>
           ...
       </TabControl>
    </Canvas>
</Window>

そして、C#コードビハインド:

    private void CommandBinding_CanExecute_1(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = true;
    }

    private void CommandBinding_Executed_1(object sender, ExecutedRoutedEventArgs e)
    {
        SystemCommands.CloseWindow(this);
    }

    private void CommandBinding_Executed_2(object sender, ExecutedRoutedEventArgs e)
    {
        SystemCommands.MaximizeWindow(this);
    }

    private void CommandBinding_Executed_3(object sender, ExecutedRoutedEventArgs e)
    {
        SystemCommands.MinimizeWindow(this);
    }

これにより、閉じる/最大化/最小化が通常のウィンドウとまったく同じように機能します。
もちろん、System.Windows.InteractivityC#をViewModelに移動するために使用することもできます。

于 2012-12-18T10:20:01.373 に答える
1

自分で実装する必要のあるボタン。WindowChrome.WindowChromeアタッチされたプロパティを設定した場合でも、ウィンドウのサイズ変更と移動を行うことができます。設定GlassFrameThickness="0"すると、シャドウも削除されます。

<Window ...>
   <WindowChrome.WindowChrome>
       <WindowChrome GlassFrameThickness="0"/>
   </WindowChrome.WindowChrome>
</Window>
于 2021-04-27T06:25:42.587 に答える