johannismueller
Cadet 3rd Year
- Registriert
- Aug. 2018
- Beiträge
- 59
Hallo Liebe Community, mein Name ist Johannis und ich bin neu hier.
Ich habe eine eigene Titelleiste programmiert, da die Standard Titelleiste sich nicht Individuell sich anpassen lässt im Design.
Wenn das Programm im Vollbild Ansicht ist, möchte ich bei Klicken und Ziehen der Titelleiste das dass Programm wieder im Normalen WindowsState.Normal zustand ist, so wie man das von einer Titelleiste anderer Anwendungen kennt.
könnt Ihr mir da helfen?
XAML
Code Behind C#
Ich habe eine eigene Titelleiste programmiert, da die Standard Titelleiste sich nicht Individuell sich anpassen lässt im Design.
Wenn das Programm im Vollbild Ansicht ist, möchte ich bei Klicken und Ziehen der Titelleiste das dass Programm wieder im Normalen WindowsState.Normal zustand ist, so wie man das von einer Titelleiste anderer Anwendungen kennt.
könnt Ihr mir da helfen?
XAML
XML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Vertical" Grid.Row="0" VerticalAlignment="Top">
<ContentControl Background="#262626" Height="50" MouseDoubleClick="ContentControl_MouseDoubleClick">
<Rectangle Fill="#262626" Height="50" MouseLeftButtonDown="Rectangle_MouseLeftButtonDown">
<Rectangle.ContextMenu>
<ContextMenu x:Name="MenuTitelleiste">
<MenuItem Header="Anwendung Minimieren" Click="ProgrammMinimieren_Click"/>
<MenuItem Header="Anwendung Maximieren" Click="ProgrammMaximieren_Click"/>
<MenuItem Header="Anwendung beenden" Click="ProgrammClose_Click"/>
</ContextMenu>
</Rectangle.ContextMenu>
</Rectangle>
</ContentControl>
</StackPanel>
<StackPanel Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" >
<Label Content="Meine Titelleiste" FontSize="18" Width="150" Height="35" FontWeight="DemiBold" Foreground="Gray"></Label>
</StackPanel>
<StackPanel Grid.Row="0" VerticalAlignment="Top" Cursor="Hand" HorizontalAlignment="Right">
<Button x:Name="ProgrammClose" Content="X" Width="50" Height="40" Background="Transparent" Foreground="Gray" BorderThickness="0" FontSize="20" FontWeight="Bold" Cursor="Hand" Click="ProgrammClose_Click"/>
</StackPanel>
<StackPanel Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0 0 50 0">
<Button x:Name="ProgrammMaximieren" Content="◻" Width="50" Height="40" Background="Transparent" Foreground="Gray" BorderThickness="0" FontSize="25" FontWeight="Bold" Cursor="Hand" Click="ProgrammMaximieren_Click" />
</StackPanel>
<StackPanel Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Right" Cursor="Hand" Margin="0 0 100 0">
<Button x:Name="ProgrammMinimieren" Content="_" Width="50" Height="40" Background="Transparent" Foreground="Gray" BorderThickness="0" FontSize="28" FontWeight="ExtraBold" Cursor="Hand" Click="ProgrammMinimieren_Click"/>
</StackPanel>
</Grid>
Code Behind C#
C#:
namespace Titelleiste
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ContentControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (WindowState == WindowState.Normal)
{
WindowState = WindowState.Maximized;
}
else if (WindowState == WindowState.Maximized)
{
WindowState = WindowState.Normal;
}
}
private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
private void ProgrammClose_Click(object sender, RoutedEventArgs e)
{
App.Current.Shutdown();
}
private void ProgrammMaximieren_Click(object sender, RoutedEventArgs e)
{
if (WindowState == WindowState.Normal)
{
WindowState = WindowState.Maximized;
}
else if (WindowState == WindowState.Maximized)
{
WindowState = WindowState.Normal;
}
}
private void ProgrammMinimieren_Click(object sender, RoutedEventArgs e)
{
WindowState = WindowState.Minimized;
}
}
}