Browse Source

Add resizing ui test for RenderDemo

Maksym Katsydan 5 years ago
parent
commit
0042e82db2

+ 6 - 2
samples/RenderDemo/MainWindow.xaml

@@ -3,8 +3,8 @@
         x:Class="RenderDemo.MainWindow"
         Title="AvaloniaUI Rendering Test"
         xmlns:pages="clr-namespace:RenderDemo.Pages"
-        Width="800"
-        Height="600">
+        Width="{Binding Width, Mode=TwoWay}"
+        Height="{Binding Height, Mode=TwoWay}">
   <DockPanel>
     <Menu DockPanel.Dock="Top">
       <MenuItem Header="Rendering">
@@ -24,6 +24,10 @@
           </MenuItem.Icon>
         </MenuItem>
       </MenuItem>
+      <MenuItem Header="Tests">
+        <MenuItem Header="Resize window"
+                  Command="{Binding ResizeWindow}"/>
+      </MenuItem>
     </Menu>
     <TabControl Classes="sidebar">
       <TabItem Header="Animations">

+ 42 - 6
samples/RenderDemo/ViewModels/MainWindowViewModel.cs

@@ -1,5 +1,6 @@
-using System;
-using System.Reactive;
+using System.Reactive;
+using System.Threading.Tasks;
+
 using ReactiveUI;
 
 namespace RenderDemo.ViewModels
@@ -8,26 +9,61 @@ namespace RenderDemo.ViewModels
     {
         private bool drawDirtyRects = false;
         private bool drawFps = true;
+        private double width = 800;
+        private double height = 600;
 
         public MainWindowViewModel()
         {
             ToggleDrawDirtyRects = ReactiveCommand.Create(() => DrawDirtyRects = !DrawDirtyRects);
             ToggleDrawFps = ReactiveCommand.Create(() => DrawFps = !DrawFps);
+            ResizeWindow = ReactiveCommand.CreateFromTask(ResizeWindowAsync);
         }
 
         public bool DrawDirtyRects
         {
-            get { return drawDirtyRects; }
-            set { this.RaiseAndSetIfChanged(ref drawDirtyRects, value); }
+            get => drawDirtyRects;
+            set => this.RaiseAndSetIfChanged(ref drawDirtyRects, value);
         }
 
         public bool DrawFps
         {
-            get { return drawFps; }
-            set { this.RaiseAndSetIfChanged(ref drawFps, value); }
+            get => drawFps;
+            set => this.RaiseAndSetIfChanged(ref drawFps, value);
+        }
+
+        public double Width
+        {
+            get => width;
+            set => this.RaiseAndSetIfChanged(ref width, value);
+        }
+
+        public double Height
+        {
+            get => height;
+            set => this.RaiseAndSetIfChanged(ref height, value);
         }
 
         public ReactiveCommand<Unit, bool> ToggleDrawDirtyRects { get; }
         public ReactiveCommand<Unit, bool> ToggleDrawFps { get; }
+        public ReactiveCommand<Unit, Unit> ResizeWindow { get; }
+
+        private async Task ResizeWindowAsync()
+        {
+            for (int i = 0; i < 30; i++)
+            {
+                Width += 10;
+                Height += 5;
+                await Task.Delay(10);
+            }
+
+            await Task.Delay(10);
+
+            for (int i = 0; i < 30; i++)
+            {
+                Width -= 10;
+                Height -= 5;
+                await Task.Delay(10);
+            }
+        }
     }
 }