最大化されたときにChromeブラウザーを見ると、ウィンドウの上部にタブヘッダーがあります。似たようなことはできますか?
2 に答える
もちろんですが、これらのボタンは自分で作り直す必要があります(難しくはありませんが、心配しないでください)。
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.CloseWindowCommand
は
SystemCommands.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.Interactivity
C#をViewModelに移動するために使用することもできます。
自分で実装する必要のあるボタン。WindowChrome.WindowChrome
アタッチされたプロパティを設定した場合でも、ウィンドウのサイズ変更と移動を行うことができます。設定GlassFrameThickness="0"
すると、シャドウも削除されます。
<Window ...>
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="0"/>
</WindowChrome.WindowChrome>
</Window>