using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace YKC { public partial class MainWindow : Window { private Dictionary _navButtons = new Dictionary(); private Dictionary _navTitles = new Dictionary(); private string _username = "Admin"; public void SetUser(string name) { _username = name; if (txtUser != null) txtUser.Text = name; } public MainWindow() { InitializeComponent(); _navButtons["dashboard"] = btnDashboard; _navButtons["realtime"] = btnRealtime; _navButtons["charger"] = btnCharger; _navButtons["gateway"] = btnGateway; _navTitles["dashboard"] = "总览"; _navTitles["realtime"] = "实时监控"; _navTitles["charger"] = "充电桩管理"; _navTitles["gateway"] = "网关管理"; txtUser.Text = "Admin"; Loaded += (s, e) => { UdpClientHolder.Instance.OnActiveReport += PilesStoreHolder.Instance.HandleReport; NavigateTo("dashboard"); }; } private void SetActiveNav(string key) { foreach (var kv in _navButtons) { var btn = kv.Value; var border = btn.Template?.FindName("border", btn) as Border; if (kv.Key == key) { btn.Foreground = new SolidColorBrush(Colors.White); btn.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#1A3A5C")); btn.BorderBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3B82F6")); btn.BorderThickness = new Thickness(3, 0, 0, 0); } else { btn.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#8899AA")); btn.Background = new SolidColorBrush(Colors.Transparent); btn.BorderBrush = new SolidColorBrush(Colors.Transparent); btn.BorderThickness = new Thickness(3, 0, 0, 0); } } } private void NavigateTo(string key) { SetActiveNav(key); txtPageTitle.Text = _navTitles.ContainsKey(key) ? _navTitles[key] : key; Uri uri; switch (key) { case "dashboard": uri = new Uri("Pages/DashboardPage.xaml", UriKind.Relative); break; case "realtime": uri = new Uri("Pages/RealtimePage.xaml", UriKind.Relative); break; case "charger": uri = new Uri("Pages/ChargerPage.xaml", UriKind.Relative); break; case "gateway": uri = new Uri("Pages/GatewayPage.xaml", UriKind.Relative); break; default: return; } contentFrame.Source = uri; } private void NavButton_Click(object sender, RoutedEventArgs e) { if (sender is Button btn && btn.Tag is string key) { NavigateTo(key); } } private void Logout_Click(object sender, RoutedEventArgs e) { var result = MessageBox.Show("确认退出登录?", "退出", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { var loginWin = new LoginWindow(); loginWin.Show(); Close(); } } private void Header_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed) DragMove(); } } }