Kaynağa Gözat

add window states demo to control catalog.

Dan Walmsley 5 yıl önce
ebeveyn
işleme
17c2268703

+ 3 - 2
samples/ControlCatalog/MainView.xaml

@@ -59,8 +59,8 @@
       <TabItem Header="TreeView"><pages:TreeViewPage/></TabItem>
       <TabItem Header="Viewbox"><pages:ViewboxPage/></TabItem>
       <TabControl.Tag>
-        <StackPanel Width="115" Margin="8" HorizontalAlignment="Right" VerticalAlignment="Bottom">
-          <ComboBox x:Name="Decorations" SelectedIndex="0" Margin="0,0,0,8">
+        <StackPanel Width="115" Spacing="4" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="8">
+          <ComboBox x:Name="Decorations" SelectedIndex="0">
             <ComboBoxItem>No Decorations</ComboBoxItem>
             <ComboBoxItem>Border Only</ComboBoxItem>
             <ComboBoxItem>Full Decorations</ComboBoxItem>
@@ -69,6 +69,7 @@
             <ComboBoxItem>Light</ComboBoxItem>
             <ComboBoxItem>Dark</ComboBoxItem>
           </ComboBox>
+          <ComboBox Items="{Binding WindowStates}" SelectedItem="{Binding WindowState}" />
         </StackPanel>
       </TabControl.Tag>
     </TabControl>

+ 1 - 1
samples/ControlCatalog/MainWindow.xaml

@@ -7,7 +7,7 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
         xmlns:v="clr-namespace:ControlCatalog.Views"
-        x:Class="ControlCatalog.MainWindow">
+        x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}">
 
   <NativeMenu.Menu>
     <NativeMenu>

+ 26 - 1
samples/ControlCatalog/ViewModels/MainWindowViewModel.cs

@@ -1,4 +1,5 @@
 using System.Reactive;
+using Avalonia.Controls;
 using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Controls.Notifications;
 using Avalonia.Dialogs;
@@ -11,6 +12,8 @@ namespace ControlCatalog.ViewModels
         private IManagedNotificationManager _notificationManager;
 
         private bool _isMenuItemChecked = true;
+        private WindowState _windowState;
+        private WindowState[] _windowStates;
 
         public MainWindowViewModel(IManagedNotificationManager notificationManager)
         {
@@ -45,10 +48,32 @@ namespace ControlCatalog.ViewModels
                 (App.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime).Shutdown();
             });
 
-            ToggleMenuItemCheckedCommand = ReactiveCommand.Create(() => 
+            ToggleMenuItemCheckedCommand = ReactiveCommand.Create(() =>
             {
                 IsMenuItemChecked = !IsMenuItemChecked;
             });
+
+            WindowState = WindowState.Normal;
+
+            WindowStates = new WindowState[]
+            {
+                WindowState.Minimized,
+                WindowState.Normal,
+                WindowState.Maximized,
+                WindowState.FullScreen,
+            };
+        }
+
+        public WindowState WindowState
+        {
+            get { return _windowState; }
+            set { this.RaiseAndSetIfChanged(ref _windowState, value); }
+        }
+
+        public WindowState[] WindowStates
+        {
+            get { return _windowStates; }
+            set { this.RaiseAndSetIfChanged(ref _windowStates, value); }
         }
 
         public IManagedNotificationManager NotificationManager