Skip to content

Commit 1d5f797

Browse files
committed
编辑界面稳定优化
1 parent 4db4430 commit 1d5f797

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

StickyHomeworks/MainWindow.xaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@
353353
ScrollViewer.HorizontalScrollBarVisibility="Auto"
354354
ScrollViewer.VerticalScrollBarVisibility="Disabled"
355355
ScrollViewer.CanContentScroll="False"
356+
SelectionChanged="MainListView_OnSelectionChanged"
356357
Visibility="{Binding ViewModel.IsExpanded, Converter={StaticResource BooleanToVisibilityConverter}}"
357358
x:Name="MainListView"
358359
d:ItemsSource="{d:SampleData ItemCount=5}">
@@ -421,10 +422,10 @@
421422
Visibility="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=ListBoxItem}, Converter={StaticResource BooleanToVisibilityConverter}}">
422423
<Button Content="{materialDesign:PackIcon EditOutline}"
423424
Style="{StaticResource MaterialDesignToolForegroundButton}"
424-
Margin="4 -8" ToolTip="编辑" Click="ButtonEditHomework_OnClick" />
425+
Margin="4 0" ToolTip="编辑" Click="ButtonEditHomework_OnClick" />
425426
<Button Content="{materialDesign:PackIcon DeleteOutline}"
426427
Style="{StaticResource MaterialDesignToolForegroundButton}"
427-
Margin="4 -8" ToolTip="删除" Foreground="IndianRed"
428+
Margin="4 0" ToolTip="删除" Foreground="IndianRed"
428429
Click="ButtonRemoveHomework_OnClick" />
429430
</StackPanel>
430431
</StackPanel>

StickyHomeworks/MainWindow.xaml.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using StickyHomeworks.ViewModels;
2222
using StickyHomeworks.Views;
2323
using System.Windows.Automation;
24+
using System.Windows.Forms;
2425

2526
namespace StickyHomeworks;
2627

@@ -71,7 +72,7 @@ private void OnFocusChangedHandler(object sender, AutomationFocusChangedEventArg
7172
if (proc.Id != Environment.ProcessId &&
7273
!new List<string>(["ctfmon", "textinputhost", "chsime"]).Contains(proc.ProcessName.ToLower()))
7374
{
74-
Dispatcher.Invoke(ExitEditingMode);
75+
Dispatcher.Invoke(() => ExitEditingMode());
7576
}
7677
}
7778
catch
@@ -80,9 +81,10 @@ private void OnFocusChangedHandler(object sender, AutomationFocusChangedEventArg
8081
}
8182
}
8283

83-
private void ExitEditingMode()
84+
private void ExitEditingMode(bool hard=true)
8485
{
85-
MainListView.SelectedIndex = -1;
86+
if (hard)
87+
MainListView.SelectedIndex = -1;
8688
ViewModel.IsDrawerOpened = false;
8789
AppEx.GetService<HomeworkEditWindow>().TryClose();
8890
}
@@ -140,6 +142,8 @@ private void OnSubjectChanged(object? sender, EventArgs e)
140142
return;
141143
if (ViewModel.SelectedHomework == null)
142144
return;
145+
if (!ViewModel.IsDrawerOpened)
146+
return;
143147
ViewModel.IsUpdatingHomeworkSubject = true;
144148
var s = ViewModel.SelectedHomework;
145149
ProfileService.Profile.Homeworks.Remove(s);
@@ -171,6 +175,8 @@ private void ButtonCreateHomework_OnClick(object sender, RoutedEventArgs e)
171175
SettingsService.SaveSettings();
172176
ProfileService.SaveProfile();
173177
ViewModel.IsUpdatingHomeworkSubject = false;
178+
RepositionEditingWindow();
179+
AppEx.GetService<HomeworkEditWindow>().TryOpen();
174180
}
175181

176182
private void ButtonAddHomeworkCompleted_OnClick(object sender, RoutedEventArgs e)
@@ -251,14 +257,15 @@ private void ButtonEditHomework_OnClick(object sender, RoutedEventArgs e)
251257

252258
private void RepositionEditingWindow()
253259
{
254-
if (ViewModel.SelectedListBoxItem != null)
255-
{
256-
Debug.WriteLine("selected changed");
257-
GetCurrentDpi(out var dpiX, out var dpiY);
258-
var p = ViewModel.SelectedListBoxItem.PointToScreen(new Point(ViewModel.SelectedListBoxItem.ActualWidth, 0));
259-
AppEx.GetService<HomeworkEditWindow>().Left = p.X / dpiX;
260-
AppEx.GetService<HomeworkEditWindow>().Top = p.Y / dpiY;
261-
}
260+
if (ViewModel.SelectedListBoxItem == null)
261+
return;
262+
Debug.WriteLine("selected changed");
263+
GetCurrentDpi(out var dpiX, out var dpiY);
264+
var p = ViewModel.SelectedListBoxItem.PointToScreen(new Point(ViewModel.SelectedListBoxItem.ActualWidth, 0));
265+
var screen = Screen.PrimaryScreen!.WorkingArea;
266+
var homeworkEditWindow = AppEx.GetService<HomeworkEditWindow>();
267+
homeworkEditWindow.Left = p.X / dpiX;
268+
homeworkEditWindow.Top = Math.Min(p.Y, screen.Bottom - homeworkEditWindow.ActualHeight * dpiY) / dpiY;
262269
}
263270

264271
private void ButtonRemoveHomework_OnClick(object sender, RoutedEventArgs e)
@@ -413,6 +420,6 @@ private void ButtonMore_Click(object sender, RoutedEventArgs e)
413420

414421
private void MainListView_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
415422
{
416-
RepositionEditingWindow();
423+
ExitEditingMode(false);
417424
}
418425
}

0 commit comments

Comments
 (0)