diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs
index 54ed3441..ba2e8cbf 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Achievement.cs
@@ -50,4 +50,9 @@ internal sealed class Achievement
/// 图标
///
public string? Icon { get; set; }
+
+ ///
+ /// 版本
+ ///
+ public string Version { get; set; } = default!;
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs
index f5fe92d6..e171df65 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.Designer.cs
@@ -3679,7 +3679,7 @@ namespace Snap.Hutao.Resource.Localization {
}
///
- /// 查找类似 搜索成就名称,描述或编号 的本地化字符串。
+ /// 查找类似 搜索成就名称,描述,版本或编号 的本地化字符串。
///
internal static string ViewPageAchievementSearchPlaceholder {
get {
diff --git a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
index b2a94458..1e705ef7 100644
--- a/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
+++ b/src/Snap.Hutao/Snap.Hutao/Resource/Localization/SH.resx
@@ -1380,7 +1380,7 @@
删除当前存档
- 搜索成就名称,描述或编号
+ 搜索成就名称,描述,版本或编号
优先未完成
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml
index 434094f1..19f20d64 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AchievementPage.xaml
@@ -32,7 +32,10 @@
-
+
@@ -53,7 +56,7 @@
DefaultLabelPosition="Right">
-
+
+
+
+
+
+
+
+
+
+
+
((AchievementView)obj).Inner.Id == achievementId;
+ return;
}
- else
+
+ if (VersionRegex().IsMatch(search))
{
- Achievements.Filter = obj =>
- {
- AchievementView view = (AchievementView)obj;
- return view.Inner.Title.Contains(search, StringComparison.CurrentCultureIgnoreCase)
- || view.Inner.Description.Contains(search, StringComparison.CurrentCultureIgnoreCase);
- };
+ Achievements.Filter = obj => ((AchievementView)obj).Inner.Version == search;
+ return;
}
+
+ Achievements.Filter = obj =>
+ {
+ AchievementView view = (AchievementView)obj;
+ return view.Inner.Title.Contains(search, StringComparison.CurrentCultureIgnoreCase)
+ || view.Inner.Description.Contains(search, StringComparison.CurrentCultureIgnoreCase);
+ };
}
}
}
@@ -407,4 +413,7 @@ internal sealed partial class AchievementViewModel : Abstraction.ViewModel, INav
UpdateAchievementsFinishPercent();
}
}
+
+ [GeneratedRegex("\\d\\.\\d")]
+ private static partial Regex VersionRegex();
}
\ No newline at end of file