2012-12-18 39 views
5

Chromeブラウザを最大化すると、ウィンドウの上部にタブヘッダーが表示されます。同様のことをすることはできますか?WPFでは、通常の最小化、最大化、および閉じるボタンを持つ境界線のないウィンドウを作成できますか?

+1

は、窓枠(非クライアント領域)に直接ものを描くです。これはWPFでは非常に可能です。あなたが周りを検索する場合は、あなたが使用できる何かを見つけることができるかもしれません。 – BoltClock

答えて

20

もちろん、あなたはこれらのボタンを自分でリメイクする必要があります(難しくはありませんが、心配はありません)。あなたの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のキャンバスに望んだとして、ルックアンドフィールをカスタマイズ。

EDIT:

<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> 
:.NET 4.5を中に最小化/最大化/閉じるためのコマンドで構築されたあなたは、.NET 4.5を使用している場合、あなたが行うことができますので、 SystemCommands.CloseWindowCommand/ SystemCommands.MaximizeWindowCommand/ SystemCommands.MinimizeWindowCommand

です

そして、あなたの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に移動することができます。

関連する問題