diff --git a/STranslate/View/MainWindow.xaml b/STranslate/View/MainWindow.xaml index 9a62b02..e067d01 100644 --- a/STranslate/View/MainWindow.xaml +++ b/STranslate/View/MainWindow.xaml @@ -11,13 +11,10 @@ x:Name="Mwin" Background="Transparent" WindowStartupLocation="CenterScreen" - MouseLeftButtonDown="Window_MouseLeftButtonDown" AllowsTransparency="True" ShowInTaskbar="False" ResizeMode="NoResize" Topmost="True" - Deactivated="Window_Deactivated" - Closing="Mwin_Closing" WindowStyle="None" SizeToContent="Height" Width="400" @@ -52,6 +49,16 @@ Command="{Binding EscCmd}"/> + + + + + + + + + + diff --git a/STranslate/View/MainWindow.xaml.cs b/STranslate/View/MainWindow.xaml.cs index 1f6f4df..64a7d1c 100644 --- a/STranslate/View/MainWindow.xaml.cs +++ b/STranslate/View/MainWindow.xaml.cs @@ -14,15 +14,14 @@ namespace STranslate.View private MainVM vm; public MainWindow() { - InitializeComponent(); + //InitializeComponent(); DataContext = new MainVM(this); vm = (MainVM)DataContext; - //if (HotKeys.InputTranslate.Conflict || HotKeys.CrosswordTranslate.Conflict || HotKeys.ScreenShotTranslate.Conflict) //{ - // MessageBox.Show("全局快捷键有冲突,请您到设置中重新设置"); + // MessageBox.Show("全局快捷键有冲突..."); //} } @@ -32,7 +31,10 @@ namespace STranslate.View /// protected override void OnSourceInitialized(EventArgs e) { - //base.OnSourceInitialized(e); + base.OnSourceInitialized(e); + + this.Hide(); + HotkeysHelper.InitialHook(this); HotkeysHelper.Register(HotkeysHelper.InputTranslateId, () => { @@ -54,36 +56,5 @@ namespace STranslate.View vm.OpenMainWin(); }); } - - - /// - /// 移动 - /// - /// - /// - private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) - { - DragMove(); - } - - /// - /// 非激活窗口则隐藏起来 - /// - /// - /// - private void Window_Deactivated(object sender, EventArgs e) - { - if (vm == null) return; - if (!vm.IsTopmost) - { - vm.Speech.SpeakAsyncCancelAll(); - this.Hide(); - } - } - - private void Mwin_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - HotkeysHelper.UnRegisterHotKey(); - } } } \ No newline at end of file diff --git a/STranslate/ViewModel/MainVM.cs b/STranslate/ViewModel/MainVM.cs index 9441fd8..fbfe68f 100644 --- a/STranslate/ViewModel/MainVM.cs +++ b/STranslate/ViewModel/MainVM.cs @@ -18,7 +18,6 @@ namespace STranslate.ViewModel public MainVM(Window win) { _Mainwin = (MainWindow)win; - OpenMainWin(); if (!ReadConfig()) { @@ -107,6 +106,20 @@ namespace STranslate.ViewModel #endregion #region Common + //移动 + MouseLeftDownCmd = new RelayCommand((_) => true, (_) => + { + _Mainwin.DragMove(); + }); + //失去焦点 + DeactivatedCmd = new RelayCommand((_) => true, (_) => + { + if (!IsTopmost) + { + Speech.SpeakAsyncCancelAll(); + _Mainwin.Hide(); + } + }); //source speak SourceSpeakCmd = new RelayCommand((_) => true, (_) => { @@ -222,6 +235,8 @@ namespace STranslate.ViewModel IsVisibility = false; //语音合成销毁 Speech.Dispose(); + //注销快捷键 + HotkeysHelper.UnRegisterHotKey(); if (id == 0) { //写入配置 @@ -389,6 +404,8 @@ namespace STranslate.ViewModel #region Params private string translateResp; + public ICommand MouseLeftDownCmd { get; private set; } + public ICommand DeactivatedCmd { get; private set; } public ICommand SourceSpeakCmd { get; private set; } public ICommand TargetSpeakCmd { get; private set; } public ICommand TranslateCmd { get; private set; }