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

XFEExtension.NetCore.WinUIHelper

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

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

XFEstudio/XFEExtension.NetCore.WinUIHelper

添加自动导航服务

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

代码差异

6 个文件 +58 -8
Added XFEExtension.NetCore.WinUIHelper/Implements/Services/AutoNavigationParameterService.cs +42 -0
@@ -0,0 +1,42 @@
1 using System.Diagnostics.CodeAnalysis;
2 using XFEExtension.NetCore.WinUIHelper.Interface.Services;
3 using XFEExtension.NetCore.WinUIHelper.Utilities.Helper;
4
5 namespace XFEExtension.NetCore.WinUIHelper.Implements.Services;
6
7 class AutoNavigationParameterService<T> : IAutoNavigationParameterService<T>
8 {
9 private bool sameAsLast;
10 private T? parameter;
11 private Page? _page;
12 public T? Parameter
13 {
14 get => parameter;
15 set
16 {
17 if (_page is not null)
18 NavigationHelper.SetParameter(_page, value);
19 parameter = value;
20 OnParameterChange(value);
21 }
22 }
23
24 public bool SameAsLast => sameAsLast;
25
26 public Page? CurrentPage => _page;
27
28 public event EventHandler<T?>? ParameterChange;
29
30 [MemberNotNull(nameof(_page))]
31 public void Initialize(Page page) => _page = page;
32
33 public void OnParameterChange(object? inParameter)
34 {
35 sameAsLast = inParameter is null ? parameter is null : inParameter.Equals(parameter);
36 if (inParameter is T parameterValue)
37 parameter = parameterValue;
38 else
39 parameter = default;
40 ParameterChange?.Invoke(this, Parameter);
41 }
42 }
Added XFEExtension.NetCore.WinUIHelper/Interface/Services/IAutoNavigationParameterService.cs +7 -0
@@ -0,0 +1,7 @@
1 namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;
2
3 /// <summary>
4 /// 自动导航参数服务
5 /// </summary>
6 /// <typeparam name="T">目标参数类型</typeparam>
7 public interface IAutoNavigationParameterService<T> : INavigationParameterService<T> { }
Modified XFEExtension.NetCore.WinUIHelper/Interface/Services/INavigationParameterService.cs +1 -4
@@ -1,7 +1,4 @@
1 using XFEExtension.NetCore.WinUIHelper.Implements.Services;
2 using XFEExtension.NetCore.WinUIHelper.Utilities;
3
4 namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;
1 namespace XFEExtension.NetCore.WinUIHelper.Interface.Services;
5 2
6 3 /// <summary>
7 4 /// 导航参数服务
Renamed XFEExtension.NetCore.WinUIHelper/Utilities/Helper/AppPathHelper.cs +4 -1
@@ -1,8 +1,11 @@
1 1 using System.Reflection;
2 2 using XFEExtension.NetCore.AutoPath;
3 3
4 namespace XFEExtension.NetCore.WinUIHelper.Utilities;
4 namespace XFEExtension.NetCore.WinUIHelper.Utilities.Helper;
5 5
6 /// <summary>
7 /// 应用程序路径
8 /// </summary>
6 9 public partial class AppPathHelper
7 10 {
8 11 /// <summary>
Modified XFEExtension.NetCore.WinUIHelper/Utilities/Helper/NavigationHelper.cs +3 -2
@@ -1,4 +1,5 @@
1 using XFEExtension.NetCore.WinUIHelper.Utilities.Addition;
1 using XFEExtension.NetCore.WinUIHelper.Interface.Services;
2 using XFEExtension.NetCore.WinUIHelper.Utilities.Addition;
2 3
3 4 namespace XFEExtension.NetCore.WinUIHelper.Utilities.Helper;
4 5
@@ -18,7 +19,7 @@ public static class NavigationHelper
18 19 /// </summary>
19 20 /// <param name="page">目标页面</param>
20 21 /// <returns>导航参数</returns>
21 public static object? GetParameter(this Page page) => page.GetType().GetProperty("Parameter")?.GetValue(page);
22 public static object? GetParameter(this Page page) => (page.GetType().GetProperty("ViewModel")?.PropertyType.GetProperties().Where(property => property.PropertyType.FullName == typeof(IAutoNavigationParameterService<object>).FullName).FirstOrDefault() ?? page.GetType().GetProperty("Parameter"))?.GetValue(page);
22 23 /// <summary>
23 24 /// 获取导航目标附加值
24 25 /// </summary>
Modified XFEExtension.NetCore.WinUIHelper/XFEExtension.NetCore.WinUIHelper.csproj +1 -1
@@ -9,7 +9,7 @@
9 9 <Nullable>enable</Nullable>
10 10 <GenerateDocumentationFile>True</GenerateDocumentationFile>
11 11 <Title>XFEExtension.NetCore.WinUIHelper</Title>
12 <Version>1.1.2</Version>
12 <Version>1.2.0</Version>
13 13 <Authors>XFEstudio</Authors>
14 14 <PackageIcon>logoIcon.png</PackageIcon>
15 15 <Description>WinUI的各种工具类,帮助开发者快速构建一个模块化的WinUI项目</Description>