Files
community/Ink Canvas/Windows/SettingsViews/Pages/HomePage.xaml.cs
T

98 lines
3.0 KiB
C#
Raw Normal View History

2026-04-24 07:13:27 +08:00
using iNKORE.UI.WPF.Modern.Common.IconKeys;
using iNKORE.UI.WPF.Modern.Controls;
using System.Collections.ObjectModel;
2026-04-04 18:45:59 +08:00
using System.Windows;
using System.Windows.Controls;
2026-04-24 07:13:27 +08:00
using System.Windows.Media;
2026-04-04 18:45:59 +08:00
2026-04-05 21:50:53 +08:00
namespace Ink_Canvas.Windows.SettingsViews.Pages
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
public class QuickNavItem
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
public string Header { get; set; }
public string Description { get; set; }
public string PageTag { get; set; }
public string IconGlyph { get; set; }
}
public partial class HomePage
{
private readonly ObservableCollection<QuickNavItem> _navItems = new();
2026-04-04 18:45:59 +08:00
public HomePage()
{
InitializeComponent();
2026-04-24 07:13:27 +08:00
QuickNavItems.ItemsSource = _navItems;
Loaded += HomePage_Loaded;
2026-04-04 18:45:59 +08:00
}
2026-04-24 07:13:27 +08:00
private void HomePage_Loaded(object sender, RoutedEventArgs e)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
LoadNavigationItems();
2026-04-04 18:45:59 +08:00
}
2026-04-24 07:13:27 +08:00
private void LoadNavigationItems()
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
_navItems.Clear();
var settingsWindow = Window.GetWindow(this) as SettingsWindow;
if (settingsWindow == null) return;
var navView = settingsWindow.GetNavigationView();
if (navView == null) return;
CollectNavItems(navView.MenuItems);
CollectNavItems(navView.FooterMenuItems);
}
private void CollectNavItems(System.Collections.IEnumerable items)
{
foreach (var item in items)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
if (item is NavigationViewItem navItem)
{
string tag = navItem.Tag as string;
if (!string.IsNullOrEmpty(tag) && tag != "HomePage")
{
string glyph = ExtractIconGlyph(navItem);
string description = System.Windows.Controls.ToolTipService.GetToolTip(navItem) as string
?? $"点击跳转到{navItem.Content}";
_navItems.Add(new QuickNavItem
{
Header = navItem.Content?.ToString() ?? "",
Description = description,
PageTag = tag,
IconGlyph = glyph
});
}
}
2026-04-04 18:45:59 +08:00
}
}
2026-04-24 07:13:27 +08:00
private string ExtractIconGlyph(NavigationViewItem navItem)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
if (navItem.Icon is FontIcon fontIcon)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
return fontIcon.Glyph ?? "\uE713";
2026-04-04 18:45:59 +08:00
}
2026-04-24 07:13:27 +08:00
if (navItem.Icon is SymbolIcon symbolIcon)
{
return char.ConvertFromUtf32((int)symbolIcon.Symbol);
}
return "\uE713";
2026-04-04 18:45:59 +08:00
}
2026-04-24 07:13:27 +08:00
private void QuickNavCard_Click(object sender, RoutedEventArgs e)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
if (sender is FrameworkElement element && element.Tag is string pageTag)
2026-04-04 18:45:59 +08:00
{
2026-04-24 07:13:27 +08:00
var settingsWindow = Window.GetWindow(this) as SettingsWindow;
settingsWindow?.NavigateToPage(pageTag);
2026-04-04 18:45:59 +08:00
}
}
}
}