Skip to content

Commit

Permalink
解决简约模式下调整界面缩放会导致黑板贴宽度变化的问题 #33
Browse files Browse the repository at this point in the history
  • Loading branch information
STBBRD committed Sep 21, 2024
1 parent 11ff315 commit 276d287
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 13 deletions.
3 changes: 2 additions & 1 deletion ZongziTEK_Blackboard_Sticker/Controls/Cards/SliderCard.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
<ColumnDefinition/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<Slider x:Name="MainSlider" Grid.Column="0" ValueChanged="MainSlider_ValueChanged" IsSnapToTickEnabled="True" VerticalAlignment="Center" TickPlacement="Both" AutoToolTipPlacement="None"/>
<Slider x:Name="MainSlider" Grid.Column="0" ValueChanged="MainSlider_ValueChanged" PreviewMouseDown="MainSlider_PreviewMouseDown" PreviewMouseUp="MainSlider_PreviewMouseUp"
IsSnapToTickEnabled="True" VerticalAlignment="Center" TickPlacement="Both" AutoToolTipPlacement="None"/>
<TextBlock Grid.Column="1" Text="{Binding Path=Value,Source={x:Reference Name=MainSlider}}" Foreground="{DynamicResource {x:Static ui:ThemeKeys.TextControlForegroundKey}}" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="12,0,0,0"/>
</Grid>
</ui:Flyout>
Expand Down
30 changes: 30 additions & 0 deletions ZongziTEK_Blackboard_Sticker/Controls/Cards/SliderCard.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,5 +134,35 @@ private void MainSlider_ValueChanged(object sender, RoutedPropertyChangedEventAr
RoutedEventArgs routedEventArgs = new RoutedEventArgs(ValueChangedEvent, this);
RaiseEvent(routedEventArgs);
}

// ValueChangeStart Event
public static readonly RoutedEvent ValueChangeStartEvent = EventManager.RegisterRoutedEvent("ValueChangeStart", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(SliderCard));

public event RoutedEventHandler ValueChangeStart
{
add { AddHandler(ValueChangeStartEvent, value); }
remove { RemoveHandler(ValueChangeStartEvent, value); }
}

private void MainSlider_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
RoutedEventArgs routedEventArgs = new RoutedEventArgs(ValueChangeStartEvent, this);
RaiseEvent(routedEventArgs);
}

// ValueChangeEnd Event
public static readonly RoutedEvent ValueChangeEndEvent = EventManager.RegisterRoutedEvent("ValueChangeEnd", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(SliderCard));

public event RoutedEventHandler ValueChangeEnd
{
add { AddHandler(ValueChangeEndEvent, value); }
remove { RemoveHandler(ValueChangeEndEvent, value); }
}

private void MainSlider_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
RoutedEventArgs routedEventArgs = new RoutedEventArgs(ValueChangeEndEvent, this);
RaiseEvent(routedEventArgs);
}
}
}
16 changes: 9 additions & 7 deletions ZongziTEK_Blackboard_Sticker/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ private void window_StateChanged(object sender, EventArgs e)

private void window_Loaded(object sender, RoutedEventArgs e)
{
SwitchLookMode();
SwitchLookMode(Settings.Look.LookMode);

if (Settings.Look.IsAnimationEnhanced)
{
Expand Down Expand Up @@ -1232,7 +1232,7 @@ private void CheckTimetable(object sender, EventArgs e)
{
lastDay = DateTime.Now.DayOfWeek;

timetableToShow_index = (int)DateTime.Now.DayOfWeek;
timetableToShow_index = (int)DateTime.Now.DayOfWeek;
LoadTimetable();
}

Expand Down Expand Up @@ -1948,8 +1948,10 @@ public static string GetDataPath()

public static void SetWindowScaleTransform(double Multiplier)
{
(Application.Current.MainWindow as MainWindow).windowScale.ScaleX = Multiplier;
(Application.Current.MainWindow as MainWindow).windowScale.ScaleY = Multiplier;
MainWindow window = Application.Current.MainWindow as MainWindow;

window.windowScale.ScaleX = Multiplier;
window.windowScale.ScaleY = Multiplier;
}

public static void SetTheme()
Expand Down Expand Up @@ -2054,11 +2056,11 @@ public static bool StartAutomaticallyDel(string exeName)
return null;
}*/

public static void SwitchLookMode()
public static void SwitchLookMode(int mode)
{
MainWindow window = Application.Current.MainWindow as MainWindow;

switch (Settings.Look.LookMode)
switch (mode)
{
case 0: // 默认
window.BorderMain.ClearValue(WidthProperty);
Expand All @@ -2083,7 +2085,7 @@ public static void SwitchLookMode()
window.ColumnClock.Width = new GridLength(1, GridUnitType.Star);

window.frameInfoNavigationTimer.Stop();
window.FrameInfo.Navigate(window.frameInfoPages[0]); //切换到日期页面防止继续调用天气 API
if (window.frameInfoPages.Count > 0) window.FrameInfo.Navigate(window.frameInfoPages[0]); //切换到日期页面防止继续调用天气 API
break;

case 2: // 简约(顶部为看板)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@
<ui:ScrollViewerEx>
<ikw:SimpleStackPanel Spacing="8" Margin="24">
<Label FontSize="24" Content="外观" Margin="12,8" FontWeight="Bold"/>
<card:SliderCard Icon="{x:Static ui:FluentSystemIcons.ScaleFit_20_Regular}" Header="界面缩放" Tip="当黑板贴的界面过大或过小时,需要调节此设置项" Value="{Binding WindowScaleMultiplier, Mode=TwoWay}"
Minimum="0.5" Maximum="2.0" ValueChanged="SliderWindowScaleMultiplier_ValueChanged"/>
<card:SliderCard Icon="{x:Static ui:FluentSystemIcons.ScaleFit_20_Regular}" Header="界面缩放" Tip="当黑板贴的界面过大或过小时,需要调节此设置项"
Value="{Binding WindowScaleMultiplier, Mode=TwoWay}"
Minimum="0.5" Maximum="2.0"
ValueChanged="SliderWindowScaleMultiplier_ValueChanged"
ValueChangeStart="SliderWindowScaleMultiplier_ValueChangeStart"
ValueChangeEnd="SliderWindowScaleMultiplier_ValueChangeEnd"/>
<card:GenericSettingsCard Icon="{x:Static ui:FluentSystemIcons.PaintBrush_20_Regular}" Header="颜色主题">
<card:GenericSettingsCard.CardContent>
<ComboBox Width="180" SelectedIndex="{Binding Theme}" SelectionChanged="ComboBoxTheme_SelectionChanged">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using MessageBox = iNKORE.UI.WPF.Modern.Controls.MessageBox;

namespace ZongziTEK_Blackboard_Sticker.Pages.SettingsPages
{
Expand All @@ -30,19 +31,29 @@ public LookSettingsPage()
private void ComboBoxTheme_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MainWindow.SaveSettings();
MainWindow.SetTheme();
MainWindow.SetTheme();
}

private void ComboBoxLookMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MainWindow.SaveSettings();
MainWindow.SwitchLookMode();
MainWindow.SwitchLookMode(MainWindow.Settings.Look.LookMode);
}

private void SliderWindowScaleMultiplier_ValueChanged(object sender, RoutedEventArgs e)
{
MainWindow.SaveSettings();
MainWindow.SetWindowScaleTransform(MainWindow.Settings.Look.WindowScaleMultiplier);
}

private void SliderWindowScaleMultiplier_ValueChangeStart(object sender, RoutedEventArgs e)
{
if (MainWindow.Settings.Look.LookMode != 0) MainWindow.SwitchLookMode(0);
}

private void SliderWindowScaleMultiplier_ValueChangeEnd(object sender, RoutedEventArgs e)
{
if (MainWindow.Settings.Look.LookMode != 0) MainWindow.SwitchLookMode(MainWindow.Settings.Look.LookMode);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ private void BorderSimpleWithInfoBoard_MouseUp(object sender, MouseButtonEventAr
private void UpdateInterfaceStateAndSaveSettings()
{
MainWindow.SaveSettings();
MainWindow.SwitchLookMode();
MainWindow.SwitchLookMode(MainWindow.Settings.Look.LookMode);

foreach (Border border in StackPanelOptions.Children)
{
Expand Down

0 comments on commit 276d287

Please sign in to comment.