Files
community/Ink Canvas/Windows/SettingsViews/Pages/PluginSettingsPage.xaml.cs
T
PrefacedCorg 8b53456b5d refactor(插件设置): 移除静态属性并优化页面导航逻辑
将 PluginSettingsPage 的 CurrentPlugin 从静态属性改为实例属性,避免状态共享问题
重构 SettingsWindow 的导航逻辑,支持直接传递插件信息并避免重复导航
2026-04-30 00:08:09 +08:00

76 lines
2.2 KiB
C#

using Ink_Canvas.Plugins;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace Ink_Canvas.Windows.SettingsViews.Pages
{
public partial class PluginSettingsPage : iNKORE.UI.WPF.Modern.Controls.Page
{
private PluginInfo _currentPlugin;
public PluginInfo CurrentPlugin
{
get { return _currentPlugin; }
set
{
_currentPlugin = value;
if (IsLoaded && _currentPlugin != null)
{
LoadPluginSettings();
}
}
}
public PluginSettingsPage()
{
InitializeComponent();
Loaded += PluginSettingsPage_Loaded;
}
private void PluginSettingsPage_Loaded(object sender, RoutedEventArgs e)
{
LoadPluginSettings();
}
public void LoadPluginSettings()
{
if (_currentPlugin == null)
{
return;
}
try
{
var settingsView = _currentPlugin.Instance.GetSettingsView();
if (settingsView != null && settingsView is UIElement uiElement)
{
var parent = VisualTreeHelper.GetParent(uiElement);
if (parent != null)
{
if (parent is Decorator decorator)
{
decorator.Child = null;
}
else if (parent is ContentControl contentControl)
{
contentControl.Content = null;
}
else if (parent is Panel panel)
{
panel.Children.Remove(uiElement);
}
}
PluginSettingsContent.Content = uiElement;
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(string.Format("加载插件设置时出错: {0}", ex.Message));
}
}
}
}