diff --git a/CRSim.Core/Abstractions/ITimeService.cs b/CRSim.Core/Abstractions/ITimeService.cs index 293e8b6..6e52db5 100644 --- a/CRSim.Core/Abstractions/ITimeService.cs +++ b/CRSim.Core/Abstractions/ITimeService.cs @@ -3,14 +3,15 @@ public interface ITimeService { event EventHandler OneSecondElapsed; + event EventHandler RefreshSecondsElapsed; void Start(); - void Stop(); DateTime GetDateTimeNow(); DateTime SimulateTime { get; set; } // 初始模拟时间 + double Speed { get; set; } // 模拟倍速 } } \ No newline at end of file diff --git a/CRSim.Core/Services/TimeService.cs b/CRSim.Core/Services/TimeService.cs index a36baab..a693f00 100644 --- a/CRSim.Core/Services/TimeService.cs +++ b/CRSim.Core/Services/TimeService.cs @@ -51,12 +51,6 @@ namespace CRSim.Core.Services _lastSpeedChangeTime = DateTime.Now; // 启动时刷新时间 } - public void Stop() - { - _oneSecondTimer.Stop(); - _twentySecondsTimer.Stop(); - } - private void OnOneSecondElapsed(object sender, ElapsedEventArgs e) { OneSecondElapsed?.Invoke(this, EventArgs.Empty); diff --git a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml index a717ee4..0356d0d 100644 --- a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml +++ b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml @@ -9,7 +9,6 @@ Background="Transparent" Foreground="White" SizeToContent="WidthAndHeight" - ResizeMode="NoResize" WindowStyle="None" AllowsTransparency="True" MouseDown="Window_MouseDown" @@ -24,15 +23,23 @@ - + + - + + + + VerticalAlignment="Center" Margin="4,0,2,0" MouseLeftButtonDown="CloseWindow"/> - + + + diff --git a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs index 8c09ecd..e780e92 100644 --- a/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs +++ b/CRSim.ScreenSimulator/Views/SimulatorWindow.xaml.cs @@ -1,5 +1,4 @@ -using CommunityToolkit.Mvvm.Input; -using CRSim.Core.Abstractions; +using CRSim.Core.Abstractions; using CRSim.ScreenSimulator.Models; using System.Windows; using System.Windows.Controls; @@ -15,12 +14,13 @@ namespace CRSim.ScreenSimulator.Views public Session Session { get; } public SimulatorWindow(Page page,ITimeService timeService,StyleManager styleManager,Session session) { - Session = session; InitializeComponent(); RenderOptions.SetEdgeMode(this, EdgeMode.Aliased); + Session = session; contentFrame.Content = page; _timeService = timeService; _styleManager = styleManager; + foreach (var resource in page.Resources.Values) { if (resource is IHasTimeService needsTime) @@ -28,6 +28,15 @@ namespace CRSim.ScreenSimulator.Views needsTime.TimeService = timeService; } } + _timeService.OneSecondElapsed += UpdateTime; + } + + private void UpdateTime(object? sender, EventArgs e) + { + Dispatcher.Invoke(() => + { + TimeText.Text = _timeService.GetDateTimeNow().ToString("HH:mm:ss"); + }); } private void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) @@ -78,5 +87,20 @@ namespace CRSim.ScreenSimulator.Views Close(); }); } + + private void FullScreen(object sender, MouseButtonEventArgs e) + { + Left = 0; + viewbox.Stretch = Stretch.Uniform; + FullScreenIcon.Visibility = Visibility.Collapsed; + RestoreWindowIcon.Visibility = Visibility.Visible; + } + + private void RestoreWindow(object sender, MouseButtonEventArgs e) + { + viewbox.Stretch = Stretch.None; + FullScreenIcon.Visibility = Visibility.Visible; + RestoreWindowIcon.Visibility = Visibility.Collapsed; + } } }