add:多屏支持

This commit is contained in:
2026-04-30 18:28:39 +08:00
parent a0d24ea6cc
commit 483991b85c
8 changed files with 337 additions and 12 deletions
@@ -57,6 +57,21 @@
SwitchName="ToggleSwitchAvoidFullScreen"
Toggled="ToggleSwitchAvoidFullScreen_Toggled" />
<controls:LabeledSettingsCard x:Name="CardMultiScreenSupport"
Header="多屏支持"
Description="启用后将根据当前显示器环境启用多屏逻辑"
Icon="{x:Static ui:SegoeFluentIcons.BackToWindow}"
SwitchName="ToggleSwitchMultiScreenSupport"
Toggled="ToggleSwitchMultiScreenSupport_Toggled" />
<controls:LabeledSettingsCard x:Name="CardFollowMouseScreen"
Header="自动跟随鼠标选择显示屏"
Description="默认开启:自动以鼠标所在显示屏作为当前目标显示屏"
Icon="{x:Static ui:SegoeFluentIcons.TouchPointer}"
Visibility="{Binding IsOn, ElementName=CardMultiScreenSupport, Converter={StaticResource BooleanToVisibilityConverter}}"
SwitchName="ToggleSwitchFollowMouseScreen"
Toggled="ToggleSwitchFollowMouseScreen_Toggled" />
<ui:SettingsExpander x:Name="ExpanderAlwaysOnTop"
Header="{i18n:I18n Key=Startup_TopMost}"
Description="{i18n:I18n Key=Startup_TopMostHint}"
@@ -42,6 +42,8 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
CardNoFocusMode.IsOn = settings.Advanced.IsNoFocusMode;
CardWindowMode.IsOn = settings.Advanced.WindowMode;
CardAvoidFullScreen.IsOn = settings.Advanced.IsEnableAvoidFullScreenHelper;
CardMultiScreenSupport.IsOn = settings.Advanced.EnableMultiScreenSupport;
CardFollowMouseScreen.IsOn = settings.Advanced.FollowMouseForScreenSelection;
ToggleSwitchAlwaysOnTop.IsOn = settings.Advanced.IsAlwaysOnTop;
_topMostModeItems.Clear();
@@ -215,6 +217,48 @@ namespace Ink_Canvas.Windows.SettingsViews.Pages
}
}
private void ToggleSwitchMultiScreenSupport_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
try
{
bool newState = CardMultiScreenSupport.IsOn;
SettingsManager.Settings.Advanced.EnableMultiScreenSupport = newState;
SettingsManager.SaveSettingsToFile();
if (Application.Current.MainWindow is MainWindow mainWindow)
{
mainWindow.ApplyMultiScreenSettings();
}
}
catch (Exception ex)
{
Debug.WriteLine($"设置多屏支持时出错: {ex.Message}");
}
}
private void ToggleSwitchFollowMouseScreen_Toggled(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;
try
{
bool newState = CardFollowMouseScreen.IsOn;
SettingsManager.Settings.Advanced.FollowMouseForScreenSelection = newState;
SettingsManager.SaveSettingsToFile();
if (Application.Current.MainWindow is MainWindow mainWindow)
{
mainWindow.ApplyMultiScreenSettings();
}
}
catch (Exception ex)
{
Debug.WriteLine($"设置自动跟随鼠标选择显示屏时出错: {ex.Message}");
}
}
private void RadioTopMostNormal_Checked(object sender, RoutedEventArgs e)
{
if (!_isLoaded) return;