优化代码

This commit is contained in:
2026-03-03 16:04:20 +08:00
parent 62e79ff5b3
commit a948c0d7fb
73 changed files with 944 additions and 997 deletions
@@ -1,5 +1,5 @@
using iNKORE.UI.WPF.Helpers;
using Ink_Canvas.Helpers;
using iNKORE.UI.WPF.Helpers;
using OSVersionExtension;
using System;
using System.Collections.Generic;
@@ -8,7 +8,6 @@ using System.IO;
using System.Management;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
@@ -16,7 +15,6 @@ using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Microsoft.Win32;
namespace Ink_Canvas.Windows.SettingsViews
{
@@ -71,7 +69,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var copyright = Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyCopyrightAttribute>();
if (copyright != null && !string.IsNullOrEmpty(copyright.Copyright))
{
{
var copyrightText = copyright.Copyright;
AboutCopyright.Text = copyrightText;
AboutBottomCopyright.Text = copyrightText.Replace("Copyright ©", "© Copyright") + " 所有";
@@ -93,17 +91,17 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var assembly = Assembly.GetExecutingAssembly();
var filePath = assembly.Location;
if (File.Exists(filePath))
{
var bt = File.GetCreationTime(filePath);
var m = bt.Month.ToString().PadLeft(2, '0');
var d = bt.Day.ToString().PadLeft(2, '0');
var h = bt.Hour.ToString().PadLeft(2, '0');
var min = bt.Minute.ToString().PadLeft(2, '0');
var s = bt.Second.ToString().PadLeft(2, '0');
var m = bt.Month.ToString().PadLeft(2, '0');
var d = bt.Day.ToString().PadLeft(2, '0');
var h = bt.Hour.ToString().PadLeft(2, '0');
var min = bt.Minute.ToString().PadLeft(2, '0');
var s = bt.Second.ToString().PadLeft(2, '0');
AboutBuildTime.Text = $"{bt.Year}-{m}-{d} {h}:{min}:{s}";
}
}
else
{
AboutBuildTime.Text = "获取失败";
@@ -122,8 +120,8 @@ namespace Ink_Canvas.Windows.SettingsViews
try
{
var support = TouchTabletDetectHelper.IsTouchEnabled();
var touchcount = TouchTabletDetectHelper.GetTouchTabletDevices().Count;
var touchcount = TouchTabletDetectHelper.GetTouchTabletDevices().Count;
Dispatcher.BeginInvoke(() =>
{
if (support)
@@ -145,8 +143,8 @@ namespace Ink_Canvas.Windows.SettingsViews
}
catch (Exception ex)
{
Dispatcher.BeginInvoke(() =>
AboutTouchTabletText.Text = "检测失败");
Dispatcher.BeginInvoke(() =>
AboutTouchTabletText.Text = "检测失败");
System.Diagnostics.Debug.WriteLine($"检测触摸设备失败: {ex.Message}");
}
});
@@ -208,43 +206,43 @@ namespace Ink_Canvas.Windows.SettingsViews
try
{
ManagementObjectCollection collection;
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
collection = searcher.Get();
ManagementObjectCollection collection;
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_PnPEntity"))
collection = searcher.Get();
foreach (var device in collection)
{
foreach (var device in collection)
{
try
{
var name = device.GetPropertyValue("Name")?.ToString() ?? "";
var description = device.GetPropertyValue("Description")?.ToString() ?? "";
if (string.IsNullOrEmpty(name)) continue;
var nameLower = name.ToLower();
var descLower = description.ToLower();
if (nameLower.Contains("pentablet") ||
nameLower.Contains("tablet") ||
if (nameLower.Contains("pentablet") ||
nameLower.Contains("tablet") ||
nameLower.Contains("touch") ||
nameLower.Contains("digitizer") ||
descLower.Contains("touch") ||
descLower.Contains("digitizer"))
{
devices.Add(new USBDeviceInfo(
device.GetPropertyValue("DeviceID")?.ToString() ?? "",
device.GetPropertyValue("PNPDeviceID")?.ToString() ?? "",
description
));
devices.Add(new USBDeviceInfo(
device.GetPropertyValue("DeviceID")?.ToString() ?? "",
device.GetPropertyValue("PNPDeviceID")?.ToString() ?? "",
description
));
}
}
catch
{
continue;
}
}
}
collection.Dispose();
collection.Dispose();
}
catch (Exception ex)
{
@@ -271,10 +269,10 @@ namespace Ink_Canvas.Windows.SettingsViews
public static DateTimeOffset? GetBuildDateTime(Assembly assembly)
{
try
{
var path = assembly.Location;
if (string.IsNullOrEmpty(path) || !File.Exists(path))
{
var path = assembly.Location;
if (string.IsNullOrEmpty(path) || !File.Exists(path))
{
return null;
}
@@ -284,32 +282,32 @@ namespace Ink_Canvas.Windows.SettingsViews
fileStream.Position = 0x3C;
fileStream.Read(peHeader, 0, 4);
var peHeaderOffset = BitConverter.ToUInt32(peHeader, 0);
fileStream.Position = peHeaderOffset;
var signature = new byte[4];
fileStream.Read(signature, 0, 4);
if (signature[0] != 0x50 || signature[1] != 0x45 || signature[2] != 0x00 || signature[3] != 0x00)
{
return null;
}
var fileHeader = new byte[Marshal.SizeOf(typeof(_IMAGE_FILE_HEADER))];
fileStream.Read(fileHeader, 0, fileHeader.Length);
var pinnedBuffer = GCHandle.Alloc(fileHeader, GCHandleType.Pinned);
try
{
var coffHeader = (_IMAGE_FILE_HEADER)Marshal.PtrToStructure(pinnedBuffer.AddrOfPinnedObject(), typeof(_IMAGE_FILE_HEADER));
try
{
var coffHeader = (_IMAGE_FILE_HEADER)Marshal.PtrToStructure(pinnedBuffer.AddrOfPinnedObject(), typeof(_IMAGE_FILE_HEADER));
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var buildTime = epoch.AddSeconds(coffHeader.TimeDateStamp);
return new DateTimeOffset(buildTime.ToLocalTime());
}
finally
{
pinnedBuffer.Free();
}
}
finally
{
pinnedBuffer.Free();
}
}
}
catch
{
@@ -412,7 +410,7 @@ namespace Ink_Canvas.Windows.SettingsViews
var border = thumb.Template.FindName("ScrollbarThumbEx", thumb);
((Border)border).Background = new SolidColorBrush(Color.FromRgb(138, 138, 138));
}
private void LinkOfficialWebsite_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
@@ -461,7 +459,7 @@ namespace Ink_Canvas.Windows.SettingsViews
System.Diagnostics.Debug.WriteLine($"打开贡献者名单失败: {ex.Message}");
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,4 +1,3 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Collections.Generic;
@@ -170,8 +169,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -574,7 +573,7 @@ namespace Ink_Canvas.Windows.SettingsViews
break;
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,7 +1,6 @@
using System;
using System.Windows;
using System.Windows.Controls;
using Ink_Canvas.Windows.SettingsViews;
using System.Windows.Media;
namespace Ink_Canvas.Windows.SettingsViews
@@ -185,7 +184,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,11 +1,7 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
namespace Ink_Canvas.Windows.SettingsViews
@@ -156,7 +152,7 @@ namespace Ink_Canvas.Windows.SettingsViews
// 自动保存幻灯片墨迹
if (MainWindow.Settings.PowerPointSettings != null)
{
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoSaveStrokesInPowerPoint"),
SetToggleSwitchState(FindToggleSwitch("ToggleSwitchAutoSaveStrokesInPowerPoint"),
MainWindow.Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint);
}
}
@@ -182,8 +178,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -200,9 +196,9 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var buttons = new[] { "VerySmall", "Small", "Medium", "Large", "VeryLarge" };
var hyperbolaButtons = new[] { "Yes", "No", "Ask" };
string[] buttonNames = group == "EraserSize" ? buttons : hyperbolaButtons;
bool isDarkTheme = ThemeHelper.IsDarkTheme;
var selectedBrush = isDarkTheme ? new SolidColorBrush(Color.FromRgb(25, 25, 25)) : new SolidColorBrush(Color.FromRgb(225, 225, 225));
var unselectedBrush = new SolidColorBrush(Colors.Transparent);
@@ -664,7 +660,7 @@ namespace Ink_Canvas.Windows.SettingsViews
MainWindowSettingsHelper.InvokeSliderValueChanged("InkFadeTimeSlider", value);
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -144,7 +144,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IconSource = FindResource("PenIcon") as DrawingImage,
});
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,4 +1,3 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Collections.Generic;
@@ -120,8 +119,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -341,7 +340,7 @@ namespace Ink_Canvas.Windows.SettingsViews
break;
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,8 +1,6 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
@@ -167,8 +165,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -467,7 +465,7 @@ namespace Ink_Canvas.Windows.SettingsViews
MainWindowSettingsHelper.InvokeSliderValueChanged("MLAvoidanceWeightSlider", value);
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,4 +1,3 @@
using Ink_Canvas;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -70,7 +69,7 @@ namespace Ink_Canvas.Windows.SettingsViews
// 即使找不到控件,也尝试触发事件(可能通过反射调用)
var toggledMethodName = toggleSwitchName + "_Toggled";
InvokeMainWindowMethod(toggledMethodName, null, new RoutedEventArgs());
// 通知新设置面板同步状态
NotifySettingsPanelsSyncState(toggleSwitchName);
return;
@@ -87,10 +86,10 @@ namespace Ink_Canvas.Windows.SettingsViews
// 触发 Toggled 事件
var toggledMethodName2 = toggleSwitchName + "_Toggled";
InvokeMainWindowMethod(toggledMethodName2, toggleSwitch, new RoutedEventArgs());
// 通知新设置面板同步状态
NotifySettingsPanelsSyncState(toggleSwitchName);
// 检查是否需要更新主题
NotifyThemeUpdateIfNeeded(toggleSwitchName);
}
@@ -115,18 +114,18 @@ namespace Ink_Canvas.Windows.SettingsViews
if (comboBox != null)
{
comboBox.SelectedItem = selectedItem;
// 触发 SelectionChanged 事件
var selectionChangedMethodName = comboBoxName + "_SelectionChanged";
InvokeMainWindowMethod(selectionChangedMethodName, comboBox, new System.Windows.Controls.SelectionChangedEventArgs(
System.Windows.Controls.Primitives.Selector.SelectionChangedEvent,
new System.Collections.IList[0],
System.Windows.Controls.Primitives.Selector.SelectionChangedEvent,
new System.Collections.IList[0],
new System.Collections.IList[0]));
}
// 通知新设置面板同步状态
NotifySettingsPanelsSyncState(comboBoxName);
// 检查是否需要更新主题
NotifyThemeUpdateIfNeeded(comboBoxName);
}
@@ -152,16 +151,16 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var oldValue = slider.Value;
slider.Value = value;
// 触发 ValueChanged 事件
var valueChangedMethodName = sliderName + "_ValueChanged";
InvokeMainWindowMethod(valueChangedMethodName, slider,
InvokeMainWindowMethod(valueChangedMethodName, slider,
new System.Windows.RoutedPropertyChangedEventArgs<double>(oldValue, value));
}
// 通知新设置面板同步状态
NotifySettingsPanelsSyncState(sliderName);
// 检查是否需要更新主题(某些Slider可能影响UI外观)
NotifyThemeUpdateIfNeeded(sliderName);
}
@@ -186,7 +185,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (checkBox != null)
{
checkBox.IsChecked = isChecked;
// 尝试多种可能的方法名
var methodNames = new[]
{
@@ -195,7 +194,7 @@ namespace Ink_Canvas.Windows.SettingsViews
checkBoxName + "_Checked",
checkBoxName + "_Unchecked"
};
foreach (var methodName in methodNames)
{
var method = mainWindow.GetType().GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
@@ -236,7 +235,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
// 调用事件处理方法(它会自动保存设置并触发状态同步)
method.Invoke(mainWindow, eventHandlerParams);
// 如果提供了控件名称,确保状态同步
if (!string.IsNullOrEmpty(controlName))
{
@@ -250,7 +249,7 @@ namespace Ink_Canvas.Windows.SettingsViews
// 如果没有事件处理方法或调用失败,直接修改设置并保存
action?.Invoke();
MainWindow.SaveSettingsToFile();
// 如果提供了控件名称,通知面板同步状态
if (!string.IsNullOrEmpty(controlName))
{
@@ -274,7 +273,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
action?.Invoke();
MainWindow.SaveSettingsToFile();
// 如果提供了控件名称,通知面板同步状态
if (!string.IsNullOrEmpty(controlName))
{
@@ -302,14 +301,14 @@ namespace Ink_Canvas.Windows.SettingsViews
if (textBox != null)
{
textBox.Text = text;
// 触发 TextChanged 事件
var textChangedMethodName = textBoxName + "_TextChanged";
InvokeMainWindowMethod(textChangedMethodName, textBox, new System.Windows.Controls.TextChangedEventArgs(
System.Windows.Controls.Primitives.TextBoxBase.TextChangedEvent,
System.Windows.Controls.UndoAction.None));
}
// 通知新设置面板同步状态
NotifySettingsPanelsSyncState(textBoxName);
}
@@ -336,7 +335,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
// 根据控件名称确定需要同步的面板
var panelToSync = GetPanelForControl(controlName);
if (panelToSync != null)
{
// 获取对应的面板属性
@@ -347,7 +346,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (panel != null)
{
// 调用 LoadSettings 方法重新加载设置
var loadMethod = panel.GetType().GetMethod("LoadSettings",
var loadMethod = panel.GetType().GetMethod("LoadSettings",
BindingFlags.Public | BindingFlags.Instance);
if (loadMethod != null)
{
@@ -476,7 +475,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
// 获取所有面板属性
var panelProperties = settingsWindow.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(p => p.PropertyType.Name.EndsWith("Panel") &&
.Where(p => p.PropertyType.Name.EndsWith("Panel") &&
p.PropertyType.IsSubclassOf(typeof(System.Windows.Controls.UserControl)));
foreach (var panelProp in panelProperties)
@@ -487,7 +486,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (panel != null)
{
// 调用 LoadSettings 方法
var loadMethod = panel.GetType().GetMethod("LoadSettings",
var loadMethod = panel.GetType().GetMethod("LoadSettings",
BindingFlags.Public | BindingFlags.Instance);
if (loadMethod != null)
{
@@ -537,12 +536,12 @@ namespace Ink_Canvas.Windows.SettingsViews
// 检查是否是主题相关的设置(使用更灵活的匹配)
bool isThemeRelated = false;
string controlNameLower = controlName.ToLower();
foreach (var themeControl in themeRelatedControls)
{
string themeControlLower = themeControl.ToLower();
// 检查是否包含或匹配
if (controlNameLower.Contains(themeControlLower) ||
if (controlNameLower.Contains(themeControlLower) ||
themeControlLower.Contains(controlNameLower) ||
controlNameLower == themeControlLower)
{
@@ -581,21 +580,21 @@ namespace Ink_Canvas.Windows.SettingsViews
if (window.GetType().Name == "SettingsWindow")
{
// 使用反射调用 ApplyThemeToAllPanels 方法
var method = window.GetType().GetMethod("ApplyThemeToAllPanels",
var method = window.GetType().GetMethod("ApplyThemeToAllPanels",
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
if (method != null)
{
method.Invoke(window, null);
}
// 同时调用 ApplyTheme 方法更新窗口本身
var applyThemeMethod = window.GetType().GetMethod("ApplyTheme",
var applyThemeMethod = window.GetType().GetMethod("ApplyTheme",
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
if (applyThemeMethod != null)
{
applyThemeMethod.Invoke(window, null);
}
break; // 通常只有一个设置窗口
}
}
@@ -643,7 +642,7 @@ namespace Ink_Canvas.Windows.SettingsViews
for (int i = 0; i < Media.VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = Media.VisualTreeHelper.GetChild(parent, i);
// 为 Border 控件(ToggleSwitch、选项按钮等)启用触摸支持
if (child is Border border)
{
@@ -651,7 +650,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (border.Tag != null || border.Cursor == Cursors.Hand)
{
border.IsManipulationEnabled = true;
// 添加触摸事件支持,将触摸事件转换为鼠标事件
border.TouchDown += (s, e) =>
{
@@ -665,7 +664,7 @@ namespace Ink_Canvas.Windows.SettingsViews
border.CaptureTouch(e.TouchDevice);
e.Handled = true;
};
// 添加触摸释放事件
border.TouchUp += (s, e) =>
{
@@ -704,7 +703,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
radioButton.IsManipulationEnabled = true;
}
// 递归处理子元素
EnableTouchSupportForControls(child);
}
@@ -1,8 +1,6 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
@@ -259,8 +257,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -693,7 +691,7 @@ namespace Ink_Canvas.Windows.SettingsViews
break;
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,7 +1,7 @@
using Microsoft.International.Converters.PinYinConverter;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
@@ -9,7 +9,6 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using Microsoft.International.Converters.PinYinConverter;
namespace Ink_Canvas.Windows.SettingsViews
{
@@ -106,7 +105,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var titleLower = setting.Title.ToLower();
var categoryLower = setting.Category.ToLower();
// 精准匹配
if (titleLower.Contains(searchLower) || categoryLower.Contains(searchLower))
{
@@ -198,13 +197,13 @@ namespace Ink_Canvas.Windows.SettingsViews
{
// 将搜索词转换为小写
var searchLower = search.ToLower();
// 获取文本的拼音首字母和全拼
var pinyinInitials = GetPinyinInitials(text);
var pinyinFull = GetPinyinFull(text);
// 检查搜索词是否匹配拼音首字母或全拼
if (pinyinInitials.ToLower().Contains(searchLower) ||
if (pinyinInitials.ToLower().Contains(searchLower) ||
pinyinFull.ToLower().Contains(searchLower))
{
return true;
@@ -215,7 +214,7 @@ namespace Ink_Canvas.Windows.SettingsViews
// 如果拼音转换失败,返回false
return false;
}
return false;
}
@@ -380,7 +379,7 @@ namespace Ink_Canvas.Windows.SettingsViews
SearchTextBox.Text = text;
PerformSearch(text);
}
/// <summary>
/// 应用主题
/// </summary>
@@ -454,7 +453,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
try
{
Color iconColor = isDarkTheme
Color iconColor = isDarkTheme
? Color.FromRgb(243, 243, 243) // 深色主题使用浅色图标 #F3F3F3
: Color.FromRgb(34, 34, 34); // 浅色主题使用深色图标 #222222
@@ -494,8 +493,8 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var clonedGeometry = geometryDrawing.Geometry?.Clone();
var clonedBrush = CloneBrush(geometryDrawing.Brush, newColor);
var clonedPen = geometryDrawing.Pen != null
? ClonePen(geometryDrawing.Pen, newColor)
var clonedPen = geometryDrawing.Pen != null
? ClonePen(geometryDrawing.Pen, newColor)
: null;
cloned.Children.Add(new GeometryDrawing(clonedBrush, clonedPen, clonedGeometry));
@@ -525,7 +524,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
return new SolidColorBrush(newColor) { Opacity = solidBrush.Opacity };
}
else if (originalColor.A > 0 && originalColor != Colors.Transparent &&
else if (originalColor.A > 0 && originalColor != Colors.Transparent &&
originalColor.R < 50 && originalColor.G < 50 && originalColor.B < 50) // 深色
{
return new SolidColorBrush(newColor) { Opacity = solidBrush.Opacity };
@@ -1,5 +1,4 @@
using Ink_Canvas.Helpers;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Windows;
using System.Windows.Controls;
@@ -1,4 +1,3 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Windows;
@@ -45,7 +44,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
System.Diagnostics.Debug.WriteLine($"SettingsPanelBase 应用主题时出错: {ex.Message}");
}
LoadSettings();
LoadSettings();
_isLoaded = true;
}
@@ -78,7 +77,7 @@ namespace Ink_Canvas.Windows.SettingsViews
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
// 为 Border 控件(ToggleSwitch、选项按钮等)启用触摸支持
if (child is Border border)
{
@@ -86,7 +85,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (border.Tag != null || border.Cursor == Cursors.Hand)
{
border.IsManipulationEnabled = true;
// 添加触摸事件支持,将触摸事件转换为鼠标事件
border.TouchDown += Border_TouchDown;
border.PreviewTouchDown += Border_PreviewTouchDown;
@@ -112,7 +111,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
textBox.IsManipulationEnabled = true;
}
// 递归处理子元素
EnableTouchSupportForControls(child);
}
@@ -128,17 +127,17 @@ namespace Ink_Canvas.Windows.SettingsViews
// 获取触摸点位置
var touchPoint = e.GetTouchPoint(border);
// 创建模拟的鼠标事件
var mouseButtonEventArgs = new MouseButtonEventArgs(Mouse.PrimaryDevice, Environment.TickCount, MouseButton.Left)
{
RoutedEvent = UIElement.MouseLeftButtonDownEvent,
Source = border
};
// 触发鼠标按下事件
border.RaiseEvent(mouseButtonEventArgs);
// 捕获触摸设备
border.CaptureTouch(e.TouchDevice);
e.Handled = true;
@@ -154,17 +153,17 @@ namespace Ink_Canvas.Windows.SettingsViews
// 获取触摸点位置
var touchPoint = e.GetTouchPoint(border);
// 创建模拟的鼠标事件
var mouseButtonEventArgs = new MouseButtonEventArgs(Mouse.PrimaryDevice, Environment.TickCount, MouseButton.Left)
{
RoutedEvent = UIElement.PreviewMouseLeftButtonDownEvent,
Source = border
};
// 触发预览鼠标按下事件
border.RaiseEvent(mouseButtonEventArgs);
e.Handled = true;
}
@@ -187,8 +186,8 @@ namespace Ink_Canvas.Windows.SettingsViews
protected void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,4 +1,3 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.IO;
@@ -158,8 +157,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -217,7 +216,7 @@ namespace Ink_Canvas.Windows.SettingsViews
bool currentState = GetCurrentSettingValue(tag);
bool newState = !currentState;
SetToggleSwitchState(border, newState);
switch (tag)
@@ -391,7 +390,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,7 +1,5 @@
using Ink_Canvas;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
@@ -283,7 +281,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,5 +1,4 @@
using System.Windows.Media;
using Ink_Canvas;
namespace Ink_Canvas.Windows.SettingsViews
{
@@ -184,7 +183,7 @@ namespace Ink_Canvas.Windows.SettingsViews
else if (color.R == 225 && color.G == 225 && color.B == 225) // #e1e1e1 - 按钮背景/分隔线
{
// 检查是否是按钮(有内边距或特定尺寸)
if (border.Padding.Left > 0 || border.Padding.Top > 0 ||
if (border.Padding.Left > 0 || border.Padding.Top > 0 ||
(border.Width > 0 && border.Height > 0 && border.Width < 200 && border.Height < 100))
{
border.Background = GetButtonBackgroundBrush();
@@ -198,12 +197,12 @@ namespace Ink_Canvas.Windows.SettingsViews
else if (color.R == 255 && color.G == 255 && color.B == 255) // White - 白色背景
{
// 检查是否是搜索结果项(有圆角和内边距)
if (border.CornerRadius.TopLeft == 6 && border.CornerRadius.TopRight == 6 &&
if (border.CornerRadius.TopLeft == 6 && border.CornerRadius.TopRight == 6 &&
border.CornerRadius.BottomLeft == 6 && border.CornerRadius.BottomRight == 6 &&
border.Padding.Left > 0 && border.Padding.Top > 0)
{
// 搜索结果项背景
border.Background = IsDarkTheme
border.Background = IsDarkTheme
? new SolidColorBrush(Color.FromRgb(43, 43, 43)) // 深色主题搜索结果项背景
: new SolidColorBrush(Colors.White);
}
@@ -222,7 +221,7 @@ namespace Ink_Canvas.Windows.SettingsViews
border.Background = GetBackgroundPrimaryBrush();
}
}
var borderBrush = border.BorderBrush as SolidColorBrush;
if (borderBrush != null)
{
@@ -332,7 +331,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (color.R == 37 && color.G == 99 && color.B == 235) // #2563eb - 蓝色按钮(保持原色)
{
// 蓝色按钮保持原色,但更新文字颜色
if (button.Foreground is SolidColorBrush fgBrush &&
if (button.Foreground is SolidColorBrush fgBrush &&
fgBrush.Color.R == 255 && fgBrush.Color.G == 255 && fgBrush.Color.B == 255)
{
button.Foreground = new SolidColorBrush(Colors.White); // 保持白色文字
@@ -371,10 +370,10 @@ namespace Ink_Canvas.Windows.SettingsViews
{
if (drawingImage.Drawing is DrawingGroup drawingGroup)
{
Color iconColor = IsDarkTheme
Color iconColor = IsDarkTheme
? Color.FromRgb(243, 243, 243) // 深色主题使用浅色图标 #F3F3F3
: Color.FromRgb(34, 34, 34); // 浅色主题使用深色图标 #222222
// 检查图标是否使用了深色(需要更新的颜色)
bool needsUpdate = false;
foreach (var drawing in drawingGroup.Children)
@@ -401,7 +400,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
}
}
if (needsUpdate)
{
// 克隆并更新图标颜色
@@ -430,8 +429,8 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var clonedGeometry = geometryDrawing.Geometry?.Clone();
var clonedBrush = CloneBrushForTheme(geometryDrawing.Brush, newColor);
var clonedPen = geometryDrawing.Pen != null
? ClonePenForTheme(geometryDrawing.Pen, newColor)
var clonedPen = geometryDrawing.Pen != null
? ClonePenForTheme(geometryDrawing.Pen, newColor)
: null;
cloned.Children.Add(new GeometryDrawing(clonedBrush, clonedPen, clonedGeometry));
@@ -461,7 +460,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
return new SolidColorBrush(newColor) { Opacity = solidBrush.Opacity };
}
else if (originalColor.A > 0 && originalColor != Colors.Transparent &&
else if (originalColor.A > 0 && originalColor != Colors.Transparent &&
originalColor.R < 50 && originalColor.G < 50 && originalColor.B < 50) // 深色
{
return new SolidColorBrush(newColor) { Opacity = solidBrush.Opacity };
@@ -1,13 +1,10 @@
using Ink_Canvas;
using Hardcodet.Wpf.TaskbarNotification;
using iNKORE.UI.WPF.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using Hardcodet.Wpf.TaskbarNotification;
namespace Ink_Canvas.Windows.SettingsViews
{
@@ -104,7 +101,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
// 更新自定义图标列表(如果需要)
// UpdateCustomIconsInComboBox();
int selectedIndex = Math.Min(appearance.FloatingBarImg, ComboBoxFloatingBarImg.Items.Count - 1);
ComboBoxFloatingBarImg.SelectedIndex = selectedIndex;
}
@@ -228,8 +225,8 @@ namespace Ink_Canvas.Windows.SettingsViews
private void SetToggleSwitchState(Border toggleSwitch, bool isOn)
{
if (toggleSwitch == null) return;
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
toggleSwitch.Background = isOn
? new SolidColorBrush(Color.FromRgb(53, 132, 228))
: (ThemeHelper.IsDarkTheme ? ThemeHelper.GetButtonBackgroundBrush() : new SolidColorBrush(Color.FromRgb(225, 225, 225)));
var innerBorder = toggleSwitch.Child as Border;
if (innerBorder != null)
@@ -624,7 +621,7 @@ namespace Ink_Canvas.Windows.SettingsViews
themeIndex = 2;
break;
}
if (comboBox.Items.Count > themeIndex)
{
var selectedItem = comboBox.Items[themeIndex];
@@ -638,7 +635,7 @@ namespace Ink_Canvas.Windows.SettingsViews
appearance.Theme = themeIndex;
}, "ComboBoxTheme_SelectionChanged", "ComboBoxTheme");
MainWindowSettingsHelper.NotifyThemeUpdateIfNeeded("ComboBoxTheme");
// 触发主题变化事件,通知设置窗口更新主题
ThemeChanged?.Invoke(this, new RoutedEventArgs());
}
@@ -667,7 +664,7 @@ namespace Ink_Canvas.Windows.SettingsViews
appearance.Theme = themeIndex;
}, "ComboBoxTheme_SelectionChanged", "ComboBoxTheme");
MainWindowSettingsHelper.NotifyThemeUpdateIfNeeded("ComboBoxTheme");
// 触发主题变化事件,通知设置窗口更新主题
ThemeChanged?.Invoke(this, new RoutedEventArgs());
}
@@ -833,7 +830,7 @@ namespace Ink_Canvas.Windows.SettingsViews
break;
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -29,7 +29,7 @@ namespace Ink_Canvas.Windows.SettingsViews
IsTopBarNeedNoShadowEffect?.Invoke(this, new RoutedEventArgs());
}
}
/// <summary>
/// 应用主题
/// </summary>
@@ -1,6 +1,6 @@
using Ink_Canvas.Helpers;
using iNKORE.UI.WPF.Helpers;
using iNKORE.UI.WPF.Modern.Controls;
using Ink_Canvas.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,8 +9,8 @@ using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox;
using static Ink_Canvas.Helpers.AutoUpdateHelper;
using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox;
namespace Ink_Canvas.Windows.SettingsViews
{
@@ -70,7 +70,7 @@ namespace Ink_Canvas.Windows.SettingsViews
if (AutoUpdateTimePeriodBlock != null)
{
AutoUpdateTimePeriodBlock.Visibility =
AutoUpdateTimePeriodBlock.Visibility =
(MainWindow.Settings.Startup.IsAutoUpdateWithSilence && MainWindow.Settings.Startup.IsAutoUpdate) ?
Visibility.Visible : Visibility.Collapsed;
}
@@ -127,7 +127,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
var now = DateTime.Now;
var timeDiff = now - lastCheckTime;
if (timeDiff.TotalDays < 1 && lastCheckTime.Date == now.Date)
{
LastCheckTimeText.Text = $"上次检查时间: 今天, {lastCheckTime:HH:mm}";
@@ -241,7 +241,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
var groups = _availableLineGroup != null ? new List<UpdateLineGroup> { _availableLineGroup } : AutoUpdateHelper.ChannelLineGroups[updateChannel];
bool downloadSuccess = await AutoUpdateHelper.DownloadSetupFileWithFallback(_availableVersion, groups, (percent, text) =>
{
Dispatcher.BeginInvoke(new Action(() =>
@@ -298,7 +298,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
var groups = _availableLineGroup != null ? new List<AutoUpdateHelper.UpdateLineGroup> { _availableLineGroup } : AutoUpdateHelper.ChannelLineGroups[updateChannel];
bool downloadSuccess = await AutoUpdateHelper.DownloadSetupFileWithFallback(_availableVersion, groups, (percent, text) =>
{
Dispatcher.BeginInvoke(new Action(() =>
@@ -404,7 +404,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
var (remoteVersion, lineGroup, releaseNotes) = await AutoUpdateHelper.CheckForUpdates(updateChannel, manualCheck, false);
if (manualCheck)
{
var mainWindow = Application.Current.MainWindow as MainWindow;
@@ -417,20 +417,20 @@ namespace Ink_Canvas.Windows.SettingsViews
}
}
}
Dispatcher.BeginInvoke(new Action(() =>
{
StopLoadingAnimation();
if (!string.IsNullOrEmpty(remoteVersion))
{
var localVersion = Assembly.GetExecutingAssembly().GetName().Version;
var localVersionStr = localVersion.ToString();
var remoteVersionStr = remoteVersion.TrimStart('v', 'V');
Version local = new Version(localVersionStr);
Version remote = new Version(remoteVersionStr);
if (remote > local)
{
UpdateStatusText.Text = "有可用更新";
@@ -463,12 +463,12 @@ namespace Ink_Canvas.Windows.SettingsViews
{
LoadUpdateLogAsFallback(updateChannel);
}
if (manualCheck)
{
SaveLastCheckTime();
}
CheckUpdateButton.IsEnabled = true;
}));
}
@@ -512,7 +512,7 @@ namespace Ink_Canvas.Windows.SettingsViews
try
{
var (remoteVersion, lineGroup, releaseNotes) = await AutoUpdateHelper.CheckForUpdates(channel, false, false);
if (!string.IsNullOrEmpty(releaseNotes))
{
UpdateLogViewer.Markdown = releaseNotes;
@@ -543,12 +543,12 @@ namespace Ink_Canvas.Windows.SettingsViews
}
_historyVersions = await AutoUpdateHelper.GetAllGithubReleases(updateChannel);
if (_historyVersions.Count > 0)
{
var markdown = new System.Text.StringBuilder();
markdown.AppendLine("# 历史版本列表\n");
foreach (var (version, downloadUrl, releaseNotes) in _historyVersions)
{
markdown.AppendLine($"## {version}\n");
@@ -559,7 +559,7 @@ namespace Ink_Canvas.Windows.SettingsViews
}
markdown.AppendLine("\n---\n");
}
HistoryLogViewer.Markdown = markdown.ToString();
foreach (var versionInfo in _historyVersions)
@@ -591,7 +591,7 @@ namespace Ink_Canvas.Windows.SettingsViews
var version = versionInfo.Item1;
var downloadUrl = versionInfo.Item2;
var releaseNotes = versionInfo.Item3;
if (!string.IsNullOrEmpty(releaseNotes))
{
HistoryLogViewer.Markdown = $"# {version}\n\n{releaseNotes}";
@@ -776,7 +776,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
MainWindow.Settings.Startup.UpdateChannel = UpdateChannel.Release;
}, "UpdateChannelSelector");
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
new System.Windows.Controls.RadioButton { Tag = "Release" }, e);
UpdateUpdateChannelButtons(UpdateChannel.Release);
LoadHistoryVersions();
@@ -788,7 +788,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
MainWindow.Settings.Startup.UpdateChannel = UpdateChannel.Preview;
}, "UpdateChannelSelector");
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
new System.Windows.Controls.RadioButton { Tag = "Preview" }, e);
UpdateUpdateChannelButtons(UpdateChannel.Preview);
LoadHistoryVersions();
@@ -800,7 +800,7 @@ namespace Ink_Canvas.Windows.SettingsViews
{
MainWindow.Settings.Startup.UpdateChannel = UpdateChannel.Beta;
}, "UpdateChannelSelector");
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
MainWindowSettingsHelper.InvokeMainWindowMethod("UpdateChannelSelector_Checked",
new System.Windows.Controls.RadioButton { Tag = "Beta" }, e);
UpdateUpdateChannelButtons(UpdateChannel.Beta);
LoadHistoryVersions();
@@ -816,7 +816,7 @@ namespace Ink_Canvas.Windows.SettingsViews
bool isDarkTheme = ThemeHelper.IsDarkTheme;
var selectedBrush = isDarkTheme ? new SolidColorBrush(Color.FromRgb(25, 25, 25)) : new SolidColorBrush(Color.FromRgb(225, 225, 225));
var unselectedBrush = new SolidColorBrush(Colors.Transparent);
if (UpdateChannelReleaseBorder != null)
{
bool isSelected = selectedChannel == UpdateChannel.Release;
@@ -828,7 +828,7 @@ namespace Ink_Canvas.Windows.SettingsViews
textBlock.Foreground = ThemeHelper.GetTextPrimaryBrush();
}
}
if (UpdateChannelPreviewBorder != null)
{
bool isSelected = selectedChannel == UpdateChannel.Preview;
@@ -840,7 +840,7 @@ namespace Ink_Canvas.Windows.SettingsViews
textBlock.Foreground = ThemeHelper.GetTextPrimaryBrush();
}
}
if (UpdateChannelBetaBorder != null)
{
bool isSelected = selectedChannel == UpdateChannel.Beta;
@@ -881,7 +881,7 @@ namespace Ink_Canvas.Windows.SettingsViews
AutoUpdateTimePeriodSeparator.Visibility = newState ? Visibility.Visible : Visibility.Collapsed;
if (AutoUpdateTimePeriodBlock != null)
{
AutoUpdateTimePeriodBlock.Visibility =
AutoUpdateTimePeriodBlock.Visibility =
(MainWindow.Settings.Startup.IsAutoUpdateWithSilence && MainWindow.Settings.Startup.IsAutoUpdate) ?
Visibility.Visible : Visibility.Collapsed;
}
@@ -971,20 +971,20 @@ namespace Ink_Canvas.Windows.SettingsViews
try
{
ThemeHelper.ApplyThemeToControl(this);
if (UpdateAvailableBorder != null)
{
UpdateAvailableBorder.Background = ThemeHelper.GetBackgroundPrimaryBrush();
UpdateAvailableBorder.BorderBrush = ThemeHelper.GetBorderPrimaryBrush();
}
if (CheckUpdateButton != null)
{
CheckUpdateButton.Background = ThemeHelper.GetButtonBackgroundBrush();
CheckUpdateButton.Foreground = ThemeHelper.GetTextPrimaryBrush();
CheckUpdateButton.BorderBrush = ThemeHelper.GetBorderPrimaryBrush();
}
if (UpdateNowButton != null)
{
UpdateNowButton.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235));