1 feat(navigation): 统一添加返回按钮并调整导航宽度

2
   3 - 为VariableTableView和DeviceDetailView添加返回上级页面的按钮
   4 - 将VariableHistoryView的返回按钮改为图标样式,保持一致性
   5 - 调整MainView中NavigationView的展开宽度,从500减小到200
   6 - 清理未使用的命名空间引用
This commit is contained in:
2025-10-03 23:06:04 +08:00
parent 609c4741c1
commit f86a2abed6
6 changed files with 121 additions and 41 deletions

View File

@@ -12,6 +12,7 @@ using DMS.WPF.Interfaces;
using DMS.WPF.ViewModels.Dialogs;
using DMS.WPF.ViewModels.Items;
using iNKORE.UI.WPF.Modern.Common.IconKeys;
using Microsoft.Extensions.DependencyInjection;
namespace DMS.WPF.ViewModels;
@@ -209,4 +210,22 @@ public partial class DeviceDetailViewModel : ViewModelBase
new NavigationParameter(nameof(VariableTableViewModel), SelectedVariableTable.Id,
NavigationType.VariableTable));
}
/// <summary>
/// 返回到设备列表页命令
/// </summary>
[RelayCommand]
private async Task NavigateToDevicesList()
{
try
{
// 导航到设备列表页面
var navigationService = App.Current.Services.GetRequiredService<INavigationService>();
await navigationService.NavigateToAsync(this, new NavigationParameter(nameof(DevicesViewModel), 0, NavigationType.Device));
}
catch (Exception ex)
{
_notificationService.ShowError($"导航到设备列表失败: {ex.Message}", ex);
}
}
}

View File

@@ -744,6 +744,24 @@ partial class VariableTableViewModel : ViewModelBase, INavigatable
new NavigationParameter(nameof(VariableHistoryViewModel), SelectedVariable.Id, NavigationType.Variable));
}
/// <summary>
/// 返回到设备详情页命令
/// </summary>
[RelayCommand]
private async Task NavigateToDeviceDetail()
{
try
{
// 导航到设备详情页面
var navigationService = App.Current.Services.GetRequiredService<INavigationService>();
await navigationService.NavigateToAsync(this, new NavigationParameter(nameof(DeviceDetailViewModel), CurrentVariableTable.DeviceId, NavigationType.Device));
}
catch (Exception ex)
{
_notificationService.ShowError($"导航到设备详情失败: {ex.Message}", ex);
}
}
/// <summary>
/// 修改选定变量的历史记录设置。
/// </summary>

View File

@@ -73,8 +73,30 @@
</UserControl.Resources>
<ikw:SimpleStackPanel Spacing="10">
<Border Margin="10" Padding="5">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- 返回设备列表按钮 -->
<Button Grid.Column="0"
Command="{Binding NavigateToDevicesListCommand}"
Style="{StaticResource ButtonDefault}"
ToolTip="返回设备列表"
Margin="0,0,10,0">
<Button.Content>
<StackPanel Orientation="Horizontal">
<ui:FontIcon
Icon="{x:Static ui:SegoeFluentIcons.ArrowLeft8}" />
</StackPanel>
</Button.Content>
</Button>
<!-- Command Bar for Variable Tables -->
<ui:CommandBar Grid.Row="1" DefaultLabelPosition="Right" IsOpen="False" VerticalAlignment="Top">
<ui:CommandBar Grid.Column="1" DefaultLabelPosition="Right" IsOpen="False" VerticalAlignment="Top">
<ui:AppBarButton Command="{Binding AddVariableTableCommand}" Label="添加变量表">
<ui:AppBarButton.Icon>
<ui:FontIcon Icon="{x:Static ui:SegoeFluentIcons.Add}" />
@@ -92,6 +114,8 @@
</ui:AppBarButton>
<!-- Add more variable table-specific commands here if needed -->
</ui:CommandBar>
</Grid>
</Border>
<!-- Device Details Section -->
<StackPanel Grid.Row="0" Margin="10">

View File

@@ -9,7 +9,6 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mo="clr-namespace:DMS.Core.Models;assembly=DMS.Core"
xmlns:taskbarNotification="http://www.hardcodet.net/taskbar"
xmlns:tb="http://hardcodet.net/taskbar"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:vm="clr-namespace:DMS.WPF.ViewModels"
Title="设备管理系统"
@@ -57,7 +56,7 @@
</taskbarNotification:TaskbarIcon>
<ui:NavigationView
AlwaysShowHeader="True"
ExpandedModeThresholdWidth="500"
ExpandedModeThresholdWidth="200"
IsBackButtonVisible="Collapsed"
IsBackEnabled="False"
IsSettingsVisible="False"

View File

@@ -34,14 +34,7 @@
</UserControl.Resources>
<DockPanel>
<Border DockPanel.Dock="Top" Background="White" BorderBrush="#E0E0E0" BorderThickness="1" CornerRadius="8"
Margin="20,10" Padding="15">
<Border.Effect>
<DropShadowEffect ShadowDepth="2"
BlurRadius="5"
Opacity="0.1"
Color="#888888"/>
</Border.Effect>
<Border DockPanel.Dock="Top" Margin="20,10" Padding="15">
<Grid>
<Grid.ColumnDefinitions>
@@ -51,10 +44,17 @@
<!-- 返回变量表按钮 -->
<Button Grid.Column="0"
Content="返回变量表"
Command="{Binding NavigateToVariableTableCommand}"
Style="{StaticResource ButtonPrimary}"
Margin="0,0,10,0"/>
Style="{StaticResource ButtonDefault}"
ToolTip="返回变量表"
Margin="0,0,10,0">
<Button.Content>
<StackPanel Orientation="Horizontal">
<ui:FontIcon
Icon="{x:Static ui:SegoeFluentIcons.ArrowLeft8}" />
</StackPanel>
</Button.Content>
</Button>
<!-- 操作菜单栏 -->
<ui:CommandBar Grid.Column="1"

View File

@@ -41,9 +41,29 @@
<DockPanel>
<ikw:SimpleStackPanel Margin="10" DockPanel.Dock="Top">
<ikw:SimpleStackPanel DockPanel.Dock="Top" Margin="10" >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- 返回设备详情按钮 -->
<Button Grid.Column="0"
Command="{Binding NavigateToDeviceDetailCommand}"
Style="{StaticResource ButtonDefault}"
ToolTip="返回设备详情"
Margin="0,0,10,0">
<Button.Content>
<StackPanel Orientation="Horizontal">
<ui:FontIcon
Icon="{x:Static ui:SegoeFluentIcons.ArrowLeft8}" />
</StackPanel>
</Button.Content>
</Button>
<!-- 操作菜单 -->
<controls:CommandBar
<controls:CommandBar Grid.Column="1"
x:Name="PrimaryCommandBar"
DefaultLabelPosition="Right"
IsOpen="False">
@@ -99,6 +119,7 @@
</ui:CommandBar.SecondaryCommands>
</controls:CommandBar>
</Grid>
<!-- 变量表的名称描述等信息 -->
<ikw:SimpleStackPanel
Margin="5"
@@ -129,7 +150,6 @@
</ikw:SimpleStackPanel>
<DataGrid
x:Name="BasicGridView"
Margin="10"