1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| using ReactiveUI; using System; using System.ComponentModel; using System.Reactive.Disposables; using System.Windows; using System.Windows.Input; using System.Windows.Interop; using System.Windows.Media; using WangHaonie.CEETimer.Modules; using WangHaonie.CEETimer.ViewModels;
namespace WangHaonie.CEETimer.Windows { public partial class MainWindow : IViewFor<MainWindowViewModel> { public static readonly DependencyProperty ViewModelProperty = DependencyProperty .Register(nameof(ViewModel), typeof(MainWindowViewModel), typeof(MainWindow));
public MainWindowViewModel ViewModel { get => (MainWindowViewModel)GetValue(ViewModelProperty); set => SetValue(ViewModelProperty, value); }
object IViewFor.ViewModel { get => ViewModel; set => ViewModel = (MainWindowViewModel)value; }
public MainWindow() { InitializeComponent(); ApplyRoundedCorners(); BindData(); BindEvents(); }
private void ApplyRoundedCorners() { if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version > new Version(10, 0, 21999, 0)) { var preference = Natives.DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUND; Natives.DwmSetWindowAttribute(new WindowInteropHelper(GetWindow(this)).EnsureHandle(), Natives.DWMWINDOWATTRIBUTE.DWMWA_WINDOW_CORNER_PREFERENCE, ref preference, sizeof(uint)); } else { WindowBorder.CornerRadius = new(8); WindowBorder.BorderBrush = Brushes.Gray; WindowBorder.BorderThickness = new(1); }
}
private void BindData() { ViewModel = new MainWindowViewModel();
this.WhenActivated(d => { this.Bind(ViewModel, x => x.CountdownText, x => x.TextBlockCountdown.Text).DisposeWith(d); }); }
private void BindEvents() { ContextOptions.Click += ContextOptions_Click; ContextOpenDir.Click += ContextOpenDir_Click; TextBlockCountdown.MouseLeftButtonDown += TextBlockCountdown_MouseLeftButtonDown; TextBlockCountdown.MouseMove += TextBlockCountdown_MouseMove; TextBlockCountdown.MouseLeftButtonUp += TextBlockCountdown_MouseLeftButtonUp; Closing += MainWindow_Closing; }
private void TextBlockCountdown_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Cursor = Cursors.SizeAll; DragMove(); } }
private void TextBlockCountdown_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Cursor = Cursors.SizeAll; } else { Cursor = Cursors.Arrow; } }
private void TextBlockCountdown_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { Cursor = Cursors.Arrow; }
private void ContextOptions_Click(object sender, RoutedEventArgs e) { SingletonHelper<OptionsWindow>.ShowWindow(); }
private void ContextOpenDir_Click(object sender, RoutedEventArgs e) { App.OpenInstallDir(); }
private void MainWindow_Closing(object sender, CancelEventArgs e) { e.Cancel = true; } } }
|