XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.WinUIHelper

【DLL】WinUI的各种工具类,帮助开发者快速构建一个模块化的WinUI项目

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.WinUIHelper

添加滚动条支持到列表视图服务

在 `ListViewService.cs` 中新增 `_scrollViewer` 字段和 `ListViewScrollViewer` 属性,以获取列表视图的滚动条。更新 `Initialize` 方法以处理 `Loaded` 事件,并添加事件处理方法 `ListView_Loaded` 和 `ListView_SelectionChanged`。 在 `IListViewService.cs` 中引入 `Microsoft.UI.Xaml.Media`,并新增 `ListViewScrollViewer` 属性和 `GetScrollViewer` 方法,以便获取列表视图的滚动条。

2bc331a
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

3 个文件 +29 -4
Modified XFEExtension.NetCore.WinUIHelper/Implements/Services/ListViewService.cs +6 -0
@@ -6,17 +6,23 @@ namespace XFEExtension.NetCore.WinUIHelper.Implements.Services;
6 6 class ListViewService : IListViewService
7 7 {
8 8 private ListView? _listView;
9 private ScrollViewer? _scrollViewer;
9 10
10 11 public event SelectionChangedEventHandler? SelectionChanged;
11 12
12 13 public ListView ListView => _listView ?? throw new NullReferenceException();
13 14
15 public ScrollViewer? ListViewScrollViewer => _scrollViewer;
16
14 17 public void Initialize(ListView listView)
15 18 {
16 19 _listView = listView;
20 listView.Loaded += ListView_Loaded;
17 21 listView.SelectionChanged += ListView_SelectionChanged;
18 22 }
19 23
24 private void ListView_Loaded(object sender, RoutedEventArgs e) => _scrollViewer = ((IListViewService)this).GetScrollViewer();
25
20 26 private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) => SelectionChanged?.Invoke(sender, e);
21 27
22 28 public void RevertSelect()
Modified XFEExtension.NetCore.WinUIHelper/Interface/Services/IListViewService.cs +18 -1
@@ -1,4 +1,6 @@
1 namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;
1 using Microsoft.UI.Xaml.Media;
2
3 namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;
2 4
3 5 /// <summary>
4 6 /// 列表视图服务接口
@@ -14,6 +16,10 @@ public interface IListViewService
14 16 /// </summary>
15 17 ListView ListView { get; }
16 18 /// <summary>
19 /// 列表视图滚动条
20 /// </summary>
21 ScrollViewer? ListViewScrollViewer { get; }
22 /// <summary>
17 23 /// 初始化列表视图服务
18 24 /// </summary>
19 25 /// <param name="listView"></param>
@@ -30,4 +36,15 @@ public interface IListViewService
30 36 /// 选择范围
31 37 /// </summary>
32 38 void SelectBetween();
39 /// <summary>
40 /// 获取列表视图滚动条
41 /// </summary>
42 /// <returns></returns>
43 ScrollViewer? GetScrollViewer()
44 {
45 if (VisualTreeHelper.GetChildrenCount(ListView) > 0)
46 return VisualTreeHelper.GetChild(ListView, 0) is Border border && border.Child is ScrollViewer scrollViewer ? scrollViewer : null;
47 else
48 return null;
49 }
33 50 }
Modified XFEExtension.NetCore.WinUIHelper/XFEExtension.NetCore.WinUIHelper.csproj +5 -3
@@ -9,7 +9,7 @@
9 9 <Nullable>enable</Nullable>
10 10 <GenerateDocumentationFile>True</GenerateDocumentationFile>
11 11 <Title>XFEExtension.NetCore.WinUIHelper</Title>
12 <Version>1.0.6</Version>
12 <Version>1.0.7</Version>
13 13 <Authors>XFEstudio</Authors>
14 14 <PackageIcon>logoIcon.png</PackageIcon>
15 15 <Description>WinUI的各种工具类,帮助开发者快速构建一个模块化的WinUI项目</Description>
@@ -17,9 +17,11 @@
17 17 <NeutralLanguage>zh-CN</NeutralLanguage>
18 18 <PackageReadmeFile>README.md</PackageReadmeFile>
19 19 <PackageReleaseNotes>
20 优化 ProfileHelper 类型获取逻辑
20 添加滚动条支持到列表视图服务
21 21
22 在 `ProfileHelper.cs` 文件中,将类型获取方式从 `Type.GetType` 修改为 `Assembly.GetEntryAssembly()?.GetType`,增强了类型查找的安全性。同时,改进了错误处理逻辑,确保在未找到类型或属性时返回默认值,而不是抛出异常。
22 在 `ListViewService.cs` 中新增 `_scrollViewer` 字段和 `ListViewScrollViewer` 属性,以获取列表视图的滚动条。更新 `Initialize` 方法以处理 `Loaded` 事件,并添加事件处理方法 `ListView_Loaded` 和 `ListView_SelectionChanged`。
23
24 在 `IListViewService.cs` 中引入 `Microsoft.UI.Xaml.Media`,并新增 `ListViewScrollViewer` 属性和 `GetScrollViewer` 方法,以便获取列表视图的滚动条。
23 25
24 26 </PackageReleaseNotes>
25 27 <PackageLicenseFile>LICENSE.txt</PackageLicenseFile>