返回提交历史
Added
XFEExtension.NetCore.WinUIHelper/Implements/Services/AutoNavigationParameterService.cs
+42
-0
Added
XFEExtension.NetCore.WinUIHelper/Interface/Services/IAutoNavigationParameterService.cs
+7
-0
Modified
XFEExtension.NetCore.WinUIHelper/Interface/Services/INavigationParameterService.cs
+1
-4
Renamed
XFEExtension.NetCore.WinUIHelper/Utilities/Helper/AppPathHelper.cs
+4
-1
Modified
XFEExtension.NetCore.WinUIHelper/Utilities/Helper/NavigationHelper.cs
+3
-2
Modified
XFEExtension.NetCore.WinUIHelper/XFEExtension.NetCore.WinUIHelper.csproj
+1
-1
XFEstudio/XFEExtension.NetCore.WinUIHelper
添加自动导航服务
e38ee40
代码差异
6 个文件
+58
-8
@@ -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
}
@@ -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> { }
@@ -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
/// 导航参数服务
@@ -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>
@@ -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>
@@ -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>