diff --git a/demo/Semi.Avalonia.Demo.Desktop/Program.cs b/demo/Semi.Avalonia.Demo.Desktop/Program.cs index b2cd034..d42b109 100644 --- a/demo/Semi.Avalonia.Demo.Desktop/Program.cs +++ b/demo/Semi.Avalonia.Demo.Desktop/Program.cs @@ -1,5 +1,6 @@ using System; using Avalonia; +using Avalonia.Dialogs; using Avalonia.Media; namespace Semi.Avalonia.Demo.Desktop; @@ -26,7 +27,8 @@ class Program // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() + .UseManagedSystemDialogs() .UsePlatformDetect() - .With(new Win32PlatformOptions(){ UseCompositor = false}) + .With(new Win32PlatformOptions()) .LogToTrace(); } diff --git a/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj b/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj index 755d353..3739bd2 100644 --- a/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj +++ b/demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj @@ -11,9 +11,9 @@ - + - + diff --git a/demo/Semi.Avalonia.Demo.Web/App.axaml b/demo/Semi.Avalonia.Demo.Web/App.axaml index 834f547..fe5d151 100644 --- a/demo/Semi.Avalonia.Demo.Web/App.axaml +++ b/demo/Semi.Avalonia.Demo.Web/App.axaml @@ -4,7 +4,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Semi.Avalonia.Demo.Web"> - + \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo.Web/Program.cs b/demo/Semi.Avalonia.Demo.Web/Program.cs index d591560..1d15e3a 100644 --- a/demo/Semi.Avalonia.Demo.Web/Program.cs +++ b/demo/Semi.Avalonia.Demo.Web/Program.cs @@ -1,25 +1,17 @@ using System.Runtime.Versioning; using Avalonia; using Avalonia.Media; -using Avalonia.Web; using Semi.Avalonia.Demo.Web; +using Avalonia.Browser; [assembly: SupportedOSPlatform("browser")] internal partial class Program { - private static void Main(string[] args) => BuildAvaloniaApp() - .With(new FontManagerOptions - { - FontFallbacks = new[] - { - new FontFallback - { - FontFamily = new FontFamily("avares://Semi.Avalonia.Demo.Web/Assets/SourceHanSansCN-Regular.otf#Source Han Sans CN") - } - } - }) - .SetupBrowserApp("out"); + private static void Main(string[] args) + { + BuildAvaloniaApp().SetupBrowserApp("out"); + } public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure(); diff --git a/demo/Semi.Avalonia.Demo.Web/Semi.Avalonia.Demo.Web.csproj b/demo/Semi.Avalonia.Demo.Web/Semi.Avalonia.Demo.Web.csproj index 755a3fa..4598ae8 100644 --- a/demo/Semi.Avalonia.Demo.Web/Semi.Avalonia.Demo.Web.csproj +++ b/demo/Semi.Avalonia.Demo.Web/Semi.Avalonia.Demo.Web.csproj @@ -19,8 +19,8 @@ - - + + diff --git a/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml index b583dc5..dcb845f 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml @@ -3,7 +3,6 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:dialogs="clr-namespace:Avalonia.Dialogs;assembly=Avalonia.Dialogs" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="450" d:DesignWidth="800" diff --git a/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml.cs index 9d40153..18d5ab2 100644 --- a/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/ManagedFileChooserDemo.axaml.cs @@ -21,7 +21,8 @@ public partial class ManagedFileChooserDemo : UserControl private async void OpenFileDialog(object sender, RoutedEventArgs args) { - IStorageProvider sp = GetStorageProvider(); + IStorageProvider? sp = GetStorageProvider(); + if (sp is null) return; var result = await sp.OpenFilePickerAsync(new FilePickerOpenOptions() { Title = "Open File", @@ -31,7 +32,8 @@ public partial class ManagedFileChooserDemo : UserControl } private async void SelectFolderDialog(object sender, RoutedEventArgs args) { - IStorageProvider sp = GetStorageProvider(); + IStorageProvider? sp = GetStorageProvider(); + if (sp is null) return; var result = await sp.OpenFolderPickerAsync(new FolderPickerOpenOptions() { Title = "Select Folder", @@ -40,27 +42,20 @@ public partial class ManagedFileChooserDemo : UserControl } private async void SaveFileDialog(object sender, RoutedEventArgs args) { - IStorageProvider sp = GetStorageProvider(); + IStorageProvider? sp = GetStorageProvider(); + if (sp is null) return; var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions() { Title = "Open File", }); } - private IStorageProvider GetStorageProvider() + private IStorageProvider? GetStorageProvider() { - return new ManagedStorageProvider(GetWindow(), null); + var topLevel = TopLevel.GetTopLevel(this); + return topLevel?.StorageProvider; } - private static string FullPathOrName(IStorageItem? item) - { - if (item is null) return "(null)"; - return item.TryGetUri(out var uri) ? uri.ToString() : item.Name; - } - - Window GetWindow() => this.VisualRoot as Window ?? throw new NullReferenceException("Invalid Owner"); - TopLevel GetTopLevel() => this.VisualRoot as TopLevel ?? throw new NullReferenceException("Invalid Owner"); - List? GetFileTypes() { return new List diff --git a/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs index 0b65d5e..bdaf029 100644 --- a/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs @@ -12,7 +12,7 @@ namespace Semi.Avalonia.Demo.Pages; public partial class NotificationDemo : UserControl { - private MainWindow? _window; + private WindowNotificationManager _manager; public NotificationDemo() { InitializeComponent(); @@ -21,14 +21,15 @@ public partial class NotificationDemo : UserControl protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) { base.OnAttachedToVisualTree(e); - _window = VisualRoot as MainWindow; + var topLevel = TopLevel.GetTopLevel(this); + _manager = new WindowNotificationManager(topLevel){ MaxItems = 3}; } private void InfoButton_OnClick(object? sender, RoutedEventArgs e) { if (sender is Button b && b.Content is string s && Enum.TryParse(s, out NotificationType t)) { - _window?.Notify(t); + _manager.Show(new Notification(t.ToString(), "This is message", t)); } } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj index 7dd67bb..87981b1 100644 --- a/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj +++ b/demo/Semi.Avalonia.Demo/Semi.Avalonia.Demo.csproj @@ -11,9 +11,9 @@ - + - + diff --git a/demo/Semi.Avalonia.Demo/Views/MainWindow.axaml.cs b/demo/Semi.Avalonia.Demo/Views/MainWindow.axaml.cs index 4ff746b..aabf593 100644 --- a/demo/Semi.Avalonia.Demo/Views/MainWindow.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Views/MainWindow.axaml.cs @@ -5,19 +5,8 @@ namespace Semi.Avalonia.Demo.Views; public partial class MainWindow : Window { - private readonly WindowNotificationManager _manager; public MainWindow() { InitializeComponent(); - _manager = new WindowNotificationManager(this) - { - Position = NotificationPosition.TopLeft, - MaxItems = 3 - }; - } - - internal void Notify(NotificationType t) - { - _manager.Show(new Notification(t.ToString(), "This is a notification message", t)); } } \ No newline at end of file diff --git a/src/Semi.Avalonia/Controls/Carousel.axaml b/src/Semi.Avalonia/Controls/Carousel.axaml index 7ea121b..e72b5c2 100644 --- a/src/Semi.Avalonia/Controls/Carousel.axaml +++ b/src/Semi.Avalonia/Controls/Carousel.axaml @@ -3,19 +3,18 @@ - - + - + ItemsPanel="{TemplateBinding ItemsPanel}" /> + diff --git a/src/Semi.Avalonia/Controls/ComboBox.axaml b/src/Semi.Avalonia/Controls/ComboBox.axaml index d2d24d3..9f0b934 100644 --- a/src/Semi.Avalonia/Controls/ComboBox.axaml +++ b/src/Semi.Avalonia/Controls/ComboBox.axaml @@ -120,10 +120,7 @@ + ItemsPanel="{TemplateBinding ItemsPanel}" /> diff --git a/src/Semi.Avalonia/Controls/ContextMenu.axaml b/src/Semi.Avalonia/Controls/ContextMenu.axaml index 2d8f2c4..d16a6d5 100644 --- a/src/Semi.Avalonia/Controls/ContextMenu.axaml +++ b/src/Semi.Avalonia/Controls/ContextMenu.axaml @@ -27,8 +27,6 @@ diff --git a/src/Semi.Avalonia/Controls/DatePicker.axaml b/src/Semi.Avalonia/Controls/DatePicker.axaml index 8264ad5..66ad9f0 100644 --- a/src/Semi.Avalonia/Controls/DatePicker.axaml +++ b/src/Semi.Avalonia/Controls/DatePicker.axaml @@ -5,7 +5,6 @@ - diff --git a/src/Semi.Avalonia/Controls/ItemsControl.axaml b/src/Semi.Avalonia/Controls/ItemsControl.axaml index 2561680..526371b 100644 --- a/src/Semi.Avalonia/Controls/ItemsControl.axaml +++ b/src/Semi.Avalonia/Controls/ItemsControl.axaml @@ -8,11 +8,7 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}"> - + diff --git a/src/Semi.Avalonia/Controls/ListBox.axaml b/src/Semi.Avalonia/Controls/ListBox.axaml index 8159474..c01249d 100644 --- a/src/Semi.Avalonia/Controls/ListBox.axaml +++ b/src/Semi.Avalonia/Controls/ListBox.axaml @@ -30,10 +30,7 @@ + ItemsPanel="{TemplateBinding ItemsPanel}" /> diff --git a/src/Semi.Avalonia/Controls/ManagedFileChooser.axaml b/src/Semi.Avalonia/Controls/ManagedFileChooser.axaml index 2b4afe1..2f03eac 100644 --- a/src/Semi.Avalonia/Controls/ManagedFileChooser.axaml +++ b/src/Semi.Avalonia/Controls/ManagedFileChooser.axaml @@ -1,7 +1,8 @@ + xmlns:dialogs="clr-namespace:Avalonia.Dialogs;assembly=Avalonia.Dialogs" + xmlns:internal="clr-namespace:Avalonia.Dialogs.Internal;assembly=Avalonia.Dialogs"> - + M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M15,18V16H6V18H15M18,14V12H6V14H18Z M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z - + @@ -169,7 +170,7 @@ - + diff --git a/src/Semi.Avalonia/Controls/Menu.axaml b/src/Semi.Avalonia/Controls/Menu.axaml index e20a48e..a9316fe 100644 --- a/src/Semi.Avalonia/Controls/Menu.axaml +++ b/src/Semi.Avalonia/Controls/Menu.axaml @@ -196,8 +196,6 @@ @@ -299,8 +297,6 @@ @@ -343,8 +339,6 @@ diff --git a/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml index 0df414c..9f42e02 100644 --- a/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml +++ b/src/Semi.Avalonia/Controls/MenuFlyoutPresenter.axaml @@ -36,8 +36,6 @@ Name="PART_ItemsPresenter" Margin="{DynamicResource MenuFlyoutScrollerMargin}" Grid.IsSharedSizeScope="True" - ItemTemplate="{TemplateBinding ItemTemplate}" - Items="{TemplateBinding Items}" ItemsPanel="{TemplateBinding ItemsPanel}" KeyboardNavigation.TabNavigation="Continue" /> diff --git a/src/Semi.Avalonia/Controls/TabControl.axaml b/src/Semi.Avalonia/Controls/TabControl.axaml index 3211dab..33eae1b 100644 --- a/src/Semi.Avalonia/Controls/TabControl.axaml +++ b/src/Semi.Avalonia/Controls/TabControl.axaml @@ -15,11 +15,7 @@ CornerRadius="{TemplateBinding CornerRadius}"> - + - + @@ -139,7 +138,6 @@ diff --git a/src/Semi.Avalonia/Semi.Avalonia.csproj b/src/Semi.Avalonia/Semi.Avalonia.csproj index 0f6e338..474999a 100644 --- a/src/Semi.Avalonia/Semi.Avalonia.csproj +++ b/src/Semi.Avalonia/Semi.Avalonia.csproj @@ -3,40 +3,17 @@ net6.0;netstandard2.0 10 - 0.1.0-preview3 + 0.1.0-preview5-nightly202302010951 Semi.Avalonia IRIHI Technology Avalonia Theme inspired by Semi Design. https://github.com/irihitech/Semi.Avalonia - Add new controls: -* Slider -* GridSplitter -* Carousel -* Popup -* Tabstrip -* Timepicker -* DatePicker -* Canlendar -* CalendarDatePicker -* CaptionButtons -* TitleBar -* SplitView -* ManagedFileChooser -* DropdownButton -* SplitButton - -Fixes: -* Fix TextBox and AutoComplete Padding -* Fix Button default color -* Fix Menu spacing -* Fix various Flyout/Popup CornerRadius - -Msic: -* Add default ContextFlyout for TextBox + Migrate to Avalonia lately nightly build. +Please don't update if you are not using Avalonia latest nightly build. - +