瀏覽代碼

Added "System dialogs" page for ControlCatalog

Nikita Tsukanov 8 年之前
父節點
當前提交
eddabf7d54

+ 6 - 0
samples/ControlCatalog/ControlCatalog.csproj

@@ -32,6 +32,9 @@
     <EmbeddedResource Include="MainView.xaml">
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="Pages\DialogsPage.xaml">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <EmbeddedResource Include="Pages\BorderPage.xaml">
       <SubType>Designer</SubType>
     </EmbeddedResource>
@@ -86,6 +89,9 @@
     <Compile Include="MainWindow.xaml.cs">
       <DependentUpon>MainWindow.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Pages\DialogsPage.xaml.cs">
+      <DependentUpon>DialogsPage.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Pages\BorderPage.xaml.cs">
       <DependentUpon>BorderPage.xaml</DependentUpon>
     </Compile>

+ 1 - 1
samples/ControlCatalog/MainView.xaml

@@ -1,7 +1,7 @@
 <UserControl xmlns="https://github.com/avaloniaui"
         xmlns:pages="clr-namespace:ControlCatalog.Pages;assembly=ControlCatalog"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-  <TabControl Classes="sidebar">
+  <TabControl Classes="sidebar" Name="Sidebar">
     <TabControl.Transition>
       <CrossFade Duration="0.25"/>
     </TabControl.Transition>

+ 9 - 0
samples/ControlCatalog/MainView.xaml.cs

@@ -1,6 +1,9 @@
+using System.Collections;
 using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Markup.Xaml;
+using Avalonia.Platform;
+using ControlCatalog.Pages;
 
 namespace ControlCatalog
 {
@@ -9,6 +12,12 @@ namespace ControlCatalog
         public MainView()
         {
             this.InitializeComponent();
+            if (AvaloniaLocator.Current.GetService<IRuntimePlatform>().GetRuntimeInfo().IsDesktop)
+                ((IList) this.FindControl<TabControl>("Sidebar").Items).Add(new TabItem()
+                {
+                    Header = "System dialogs",
+                    Content = new DialogsPage()
+                });
         }
 
         private void InitializeComponent()

+ 1 - 1
samples/ControlCatalog/MainWindow.xaml.cs

@@ -11,7 +11,7 @@ namespace ControlCatalog
         {
             this.InitializeComponent();
             this.AttachDevTools();
-            Renderer.DrawDirtyRects = Renderer.DrawFps = true;
+            //Renderer.DrawDirtyRects = Renderer.DrawFps = true;
         }
 
         private void InitializeComponent()

+ 11 - 0
samples/ControlCatalog/Pages/DialogsPage.xaml

@@ -0,0 +1,11 @@
+<UserControl xmlns="https://github.com/avaloniaui">
+  <StackPanel Orientation="Vertical" Gap="4" Margin="4">
+      <Button Name="OpenFile">Open File</Button>
+      <Button Name="SaveFile">Save File</Button>
+      <Button Name="SelectFolder">Select Folder</Button>
+      <StackPanel Orientation="Horizontal">
+          <CheckBox Name="IsModal" IsChecked="True"/>
+          <TextBlock>Modal to window</TextBlock>
+      </StackPanel>
+  </StackPanel>
+</UserControl>

+ 42 - 0
samples/ControlCatalog/Pages/DialogsPage.xaml.cs

@@ -0,0 +1,42 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+#pragma warning disable 4014
+
+namespace ControlCatalog.Pages
+{
+    public class DialogsPage : UserControl
+    {
+        public DialogsPage()
+        {
+            this.InitializeComponent();
+            this.FindControl<Button>("OpenFile").Click += delegate
+            {
+                new OpenFileDialog()
+                {
+                    Title = "Open file"
+                }.ShowAsync(GetWindow());
+            };
+            this.FindControl<Button>("SaveFile").Click += delegate
+            {
+                new SaveFileDialog()
+                {
+                    Title = "Save file"
+                }.ShowAsync(GetWindow());
+            };
+            this.FindControl<Button>("SelectFolder").Click += delegate
+            {
+                new OpenFolderDialog()
+                {
+                    Title = "Select folder"
+                }.ShowAsync(GetWindow());
+            };
+        }
+
+        Window GetWindow() => this.FindControl<CheckBox>("IsModal").IsChecked ? (Window)this.VisualRoot : null;
+
+        private void InitializeComponent()
+        {
+            AvaloniaXamlLoader.Load(this);
+        }
+    }
+}