Toggle – WindowState Maximize / Normal
Wenn man in seiner WPF Applikation eigene Application-Icons zum minimieren, maximieren, schließen, usw. einsetzt, muss man erstens das Verhalten und zweitens das Aussehen selbst implementieren.
In diesem Snippet möchte ich zeigen, wie man zwischen den angezeigten Grafiken wechselt, wenn der entsprechende Zustand eintrifft.
Ist die Applikation im maximierten Zustand soll das Icon für “minimieren” angezeigt werden und wenn der Zustand der Applikation im normalen Zustand ist, anders herum.
Dies geht recht einfach mit einem Style und einem DataTrigger:
<Style TargetType="Image" x:Key="ToggleIcon"> <Setter Property="Source" Value="{DynamicResource MaximizeIcon}" /> <Style.Triggers> <DataTrigger Binding="{Binding WindowState, ElementName=TheNameOfMyWindow}" Value="Maximized"> <Setter Property="Source" Value="{DynamicResource NormalIcon}" /> </DataTrigger> </Style.Triggers> </Style> |
Die DynamicResources in dem Beispiel sind gebunden an eine ImageSource:
<ImageSource x:Key="MaximizeIcon">/MyApp.UI.Resources;component/Images/icon_maximize.png</ImageSource> <ImageSource x:Key="NormalIcon">/MyApp.UI.Resources;component/Images/icon_normal.png</ImageSource> |
Die Verwendung ist dann nur noch Formsache…
<Image Stretch="None" Style="{DynamicResource ToggleIcon}" HorizontalAlignment="Right" VerticalAlignment="Top" Cursor="Hand" ToolTip="{x:Static Resources:Resources.maximize}" MouseLeftButtonDown="ToggleMaxNormal" /> |
private void ToggleMaxNormal(object sender, MouseButtonEventArgs e) { switch (WindowState) { case WindowState.Normal: WindowState = WindowState.Maximized; break; case WindowState.Maximized: WindowState = WindowState.Normal; break; } } |
Viel Spaß beim entwickeln : )