From 29cf68d8ec22c48041d77432bd7cca3da09f581c Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 8 Feb 2025 17:37:58 +0800 Subject: [PATCH] chore: add avalonia ListBox demo. --- .../Service/Data/DataService.cs | 30 +++++++ .../UserControl/Styles/ListBoxDemo.axaml | 25 ++++++ .../UserControl/Styles/ListBoxDemo.axaml.cs | 9 ++ .../ViewModel/Main/MainViewModel.cs | 17 +++- .../Themes/Styles/ListBox.axaml | 84 ++++++++++++++++++- .../Themes/Styles/ListBoxItem.axaml | 49 ----------- .../HandyControl_Avalonia/Themes/Theme.axaml | 1 - 7 files changed, 157 insertions(+), 58 deletions(-) create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml.cs delete mode 100644 src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBoxItem.axaml diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Service/Data/DataService.cs b/src/Avalonia/HandyControlDemo_Avalonia/Service/Data/DataService.cs index 4ae0b603c..9e07b8d72 100644 --- a/src/Avalonia/HandyControlDemo_Avalonia/Service/Data/DataService.cs +++ b/src/Avalonia/HandyControlDemo_Avalonia/Service/Data/DataService.cs @@ -12,6 +12,36 @@ namespace HandyControlDemo.Service; public class DataService { + internal List GetDemoDataList() + { + var list = new List(); + for (int i = 1; i <= 20; i++) + { + var dataList = new List(); + for (int j = 0; j < 3; j++) + { + dataList.Add(new DemoDataModel + { + Index = j, IsSelected = j % 2 == 0, Name = $"SubName{j}", Type = (DemoType)j + }); + } + + var model = new DemoDataModel + { + Index = i, + IsSelected = i % 2 == 0, + Name = $"Name{i}", + Type = (DemoType)(i % 6 + 1), + DataList = dataList, + ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{i % 6 + 1}.png", + Remark = new string(i.ToString()[0], 10) + }; + list.Add(model); + } + + return list; + } + internal List GetDemoInfo() { var infoList = new List(); diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml new file mode 100644 index 000000000..4e0bffac3 --- /dev/null +++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml.cs new file mode 100644 index 000000000..0414ae920 --- /dev/null +++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Styles/ListBoxDemo.axaml.cs @@ -0,0 +1,9 @@ +namespace HandyControlDemo.UserControl; + +public partial class ListBoxDemo : Avalonia.Controls.UserControl +{ + public ListBoxDemo() + { + InitializeComponent(); + } +} diff --git a/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Main/MainViewModel.cs b/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Main/MainViewModel.cs index 478af4d4f..292080c1b 100644 --- a/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Main/MainViewModel.cs +++ b/src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Main/MainViewModel.cs @@ -76,11 +76,20 @@ private void UpdateLeftContent() //load items DemoInfoCollection = []; - foreach (var item in _dataService.GetDemoInfo()) + Dispatcher.UIThread.InvokeAsync(() => { - Dispatcher.UIThread.InvokeAsync(() => DemoInfoCollection.Add(item)); - } - Dispatcher.UIThread.InvokeAsync(() => SwitchDemo(DemoInfoCollection.First().DemoItemList.First())); + DataList = _dataService.GetDemoDataList(); + + foreach (var item in _dataService.GetDemoInfo()) + { + DemoInfoCollection.Add(item); + } + + if (DemoInfoCollection.Any() && DemoInfoCollection.First().DemoItemList.Any()) + { + SwitchDemo(DemoInfoCollection.First().DemoItemList.First()); + } + }); } private void SwitchDemo(DemoItemModel item) diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBox.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBox.axaml index bce89486e..178cd8053 100644 --- a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBox.axaml +++ b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBox.axaml @@ -1,6 +1,58 @@  - + + + + + + + + + + + + + + + + + + + + + + + @@ -11,23 +63,27 @@ + Value="2,2,2,0" /> + + + + + + + + + + + + + diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBoxItem.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBoxItem.axaml deleted file mode 100644 index dcf98b99a..000000000 --- a/src/Avalonia/HandyControl_Avalonia/Themes/Styles/ListBoxItem.axaml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml index 48f91229e..3fc5f496e 100644 --- a/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml +++ b/src/Avalonia/HandyControl_Avalonia/Themes/Theme.axaml @@ -28,7 +28,6 @@ -