From 521ed1bd0f5719cb9399a7855863ddada3baa502 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Fri, 26 Sep 2025 00:46:24 +0800 Subject: [PATCH] misc: reduce publish warning. --- .../Pages/AutoCompleteBoxDemo.axaml | 22 +++---- .../Pages/NotificationDemo.axaml.cs | 3 +- .../Pages/TreeDataGridDemo.axaml.cs | 5 +- .../Pages/TreeViewDemo.axaml.cs | 57 +++++++++++-------- .../ViewModels/IconDemoViewModel.cs | 13 ++--- .../TreeDataGridDemo/FilesPageViewModel.cs | 29 +++++----- .../TreeDataGrid.axaml | 3 +- 7 files changed, 69 insertions(+), 63 deletions(-) diff --git a/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml index c0fa49c..614efa4 100644 --- a/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml +++ b/demo/Semi.Avalonia.Demo/Pages/AutoCompleteBoxDemo.axaml @@ -32,37 +32,37 @@ ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> @@ -70,17 +70,17 @@ Width="100" IsEnabled="False" Watermark="Disabled" - ValueMemberBinding="{ReflectionBinding Name}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> + ValueMemberBinding="{Binding Name,DataType=vm:StateData}" /> diff --git a/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs index 4392a7a..15150ba 100644 --- a/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs @@ -27,7 +27,8 @@ public partial class NotificationDemo : UserControl if (sender is RadioButton b && b.Content is string s) { Enum.TryParse(s, out var t); - _manager.Position = t; + if (_manager is not null) + _manager.Position = t; } } diff --git a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs index 9da4a82..5c511cb 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/TreeDataGridDemo.axaml.cs @@ -14,10 +14,9 @@ public partial class TreeDataGridDemo : UserControl private void SelectedPath_KeyDown(object? sender, KeyEventArgs e) { - if (e.Key == Key.Enter) + if (e.Key == Key.Enter && DataContext is TreeDataGridDemoViewModel vm) { - var vm = DataContext as TreeDataGridDemoViewModel; - vm.FilesContext.SelectedPath = (sender as TextBox)!.Text; + vm.FilesContext.SelectedPath = (sender as TextBox)?.Text; } } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/Pages/TreeViewDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/TreeViewDemo.axaml.cs index 3dd9451..84aad31 100644 --- a/demo/Semi.Avalonia.Demo/Pages/TreeViewDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/TreeViewDemo.axaml.cs @@ -21,33 +21,40 @@ public class TreeViewVm : ObservableObject public TreeViewVm() { - Items = new ObservableCollection() - { - new TreeViewItemVm() { Name = "Item 1", Id = "1" }, - new TreeViewItemVm() { Name = "Item 2", Id = "2" }, - new TreeViewItemVm() + Items = + [ + new TreeViewItemVm { Name = "Item 1", Id = "1" }, + new TreeViewItemVm { Name = "Item 2", Id = "2" }, + new TreeViewItemVm { - Name = "Item 3", Id = "3", Items = new ObservableCollection() - { - new TreeViewItemVm() { Name = "Item 3.1", Id = "3.1" }, - new TreeViewItemVm() { Name = "Item 3.2", Id = "3.2" }, - new TreeViewItemVm() { Name = "Item 3.3", Id = "3.3" }, - }, - }, - }; + Name = "Item 3", Id = "3", Items = + [ + new TreeViewItemVm { Name = "Item 3.1", Id = "3.1" }, + new TreeViewItemVm { Name = "Item 3.2", Id = "3.2" }, + new TreeViewItemVm { Name = "Item 3.3", Id = "3.3" } + ], + } - MultipleLevelItems = new(); - for (int i = 1; i < 6; i++) + ]; + + MultipleLevelItems = []; + for (var i = 1; i < 6; i++) { - FirstItem firstItem = new FirstItem { Id = i, Name = $"FirstItem {i}" }; - firstItem.SecondItems = new(); - for (int j = 1; j < 6; j++) + var firstItem = new FirstItem { - SecondItem secondItem = new SecondItem { Id = j, Name = $"SecondItem {j}" }; - secondItem.ThirdItemItems = new(); - for (int k = 1; k < 6; k++) + Id = i, Name = $"FirstItem {i}", + SecondItems = [] + }; + for (var j = 1; j < 6; j++) + { + var secondItem = new SecondItem { - ThirdItem thirdItem = new ThirdItem { Id = k, Name = $"ThirdItem {k}" }; + Id = j, Name = $"SecondItem {j}", + ThirdItemItems = [] + }; + for (var k = 1; k < 6; k++) + { + var thirdItem = new ThirdItem { Id = k, Name = $"ThirdItem {k}" }; secondItem.ThirdItemItems.Add(thirdItem); } @@ -61,9 +68,9 @@ public class TreeViewVm : ObservableObject public partial class TreeViewItemVm : ObservableObject { - public ObservableCollection Items { get; set; } - public string Name { get; set; } - public string Id { get; set; } + public ObservableCollection Items { get; set; } = []; + public string? Name { get; set; } + public string? Id { get; set; } } public class ItemBase diff --git a/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs index d731fc9..8cb1851 100644 --- a/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs +++ b/demo/Semi.Avalonia.Demo/ViewModels/IconDemoViewModel.cs @@ -10,7 +10,7 @@ namespace Semi.Avalonia.Demo.ViewModels; public partial class IconDemoViewModel : ObservableObject { - private readonly IResourceDictionary? _resources = new Icons(); + private readonly Icons _resources = new(); private readonly Dictionary _filledIcons = new(); private readonly Dictionary _strokedIcons = new(); @@ -22,8 +22,6 @@ public partial class IconDemoViewModel : ObservableObject public void InitializeResources() { - if (_resources is null) return; - foreach (var provider in _resources.MergedDictionaries) { if (provider is not ResourceDictionary dic) continue; @@ -31,16 +29,17 @@ public partial class IconDemoViewModel : ObservableObject foreach (var key in dic.Keys) { if (dic[key] is not Geometry geometry) continue; + var resourceKey = key.ToString() ?? string.Empty; var icon = new IconItem { - ResourceKey = key.ToString(), + ResourceKey = resourceKey, Geometry = geometry }; - if (key.ToString().EndsWith("Stroked")) - _strokedIcons[key.ToString()] = icon; + if (resourceKey.EndsWith("Stroked", StringComparison.InvariantCultureIgnoreCase)) + _strokedIcons[resourceKey] = icon; else - _filledIcons[key.ToString()] = icon; + _filledIcons[resourceKey] = icon; } } diff --git a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs index 587f415..a01d430 100644 --- a/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs +++ b/demo/Semi.Avalonia.Demo/ViewModels/TreeDataGridDemo/FilesPageViewModel.cs @@ -19,9 +19,15 @@ public partial class FilesPageViewModel : ObservableObject public IList Drives { get; } public HierarchicalTreeDataGridSource Source { get; } [ObservableProperty] private string _selectedDrive; - [ObservableProperty] private string? _selectedPath; + private string? _selectedPath; [ObservableProperty] private FileNodeViewModel? _root; + public string? SelectedPath + { + get => _selectedPath; + set => SetSelectedPath(value); + } + partial void OnSelectedDriveChanged(string value) { Root = new FileNodeViewModel(value, true, true); @@ -31,11 +37,6 @@ public partial class FilesPageViewModel : ObservableObject } } - partial void OnSelectedPathChanged(string? value) - { - SetSelectedPath(value); - } - public FilesPageViewModel() { Drives = DriveInfo.GetDrives().Select(x => x.Name).ToList(); @@ -48,7 +49,7 @@ public partial class FilesPageViewModel : ObservableObject SelectedDrive = Drives.FirstOrDefault() ?? "/"; } - Source = new HierarchicalTreeDataGridSource(Array.Empty()) + Source = new HierarchicalTreeDataGridSource([]) { Columns = { @@ -108,16 +109,14 @@ public partial class FilesPageViewModel : ObservableObject foreach (var i in e.SelectedItems) Trace.WriteLine($"Selected '{i?.Path}'"); } - - private void SetSelectedPath(string? value) + private void SetSelectedPath(string? path) { - if (string.IsNullOrEmpty(value)) + if (string.IsNullOrEmpty(path)) { Source.RowSelection!.Clear(); return; } - var path = value; var components = new Stack(); DirectoryInfo? d = null; @@ -148,7 +147,7 @@ public partial class FilesPageViewModel : ObservableObject if (driveIndex >= 0) SelectedDrive = Drives[driveIndex]; - FileNodeViewModel? node = _root; + var node = Root; index = new IndexPath(0); while (node is not null && components.Count > 0) @@ -162,7 +161,7 @@ public partial class FilesPageViewModel : ObservableObject } } - Source.Items = [Root]; + Source.Items = [Root!]; Source.RowSelection!.SelectedIndex = index; } } @@ -275,8 +274,8 @@ public partial class FileNodeViewModel : ObservableObject, IEditableObject }; } - void IEditableObject.BeginEdit() => _undoName = _name; - void IEditableObject.CancelEdit() => _name = _undoName!; + void IEditableObject.BeginEdit() => _undoName = Name; + void IEditableObject.CancelEdit() => Name = _undoName ?? string.Empty; void IEditableObject.EndEdit() => _undoName = null; private void OnChanged(object sender, FileSystemEventArgs e) diff --git a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml index 845ed27..615412e 100644 --- a/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml +++ b/src/Semi.Avalonia.TreeDataGrid/TreeDataGrid.axaml @@ -1,7 +1,8 @@ + xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid" + x:CompileBindings="True">