From e7a0fba69fa7462f48ccaaa6854c1a81322aa57b Mon Sep 17 00:00:00 2001 From: zhangyongpan Date: Fri, 25 Jul 2025 09:20:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BA=BF=E5=9C=88=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=EF=BC=8C=E5=AF=84=E5=AD=98=E5=99=A8=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=EF=BC=8C=E8=AE=BE=E7=BD=AE=E7=95=8C=E9=9D=A2=E7=9A=84=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=EF=BC=8C=E5=B9=B6=E8=AE=BE=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ModbusDemo/App.xaml.cs | 13 ++++- ModbusDemo/MainWindow.xaml | 8 ++- ModbusDemo/ModbusDemo.csproj | 8 +-- ModbusDemo/Model/MenusInfo.cs | 21 +++++++ ModbusDemo/VIew/CoilUC.xaml | 12 ++++ ModbusDemo/VIew/CoilUC.xaml.cs | 28 ++++++++++ ModbusDemo/VIew/RegisterUC.xaml | 15 +++++ ModbusDemo/VIew/RegisterUC.xaml.cs | 28 ++++++++++ ModbusDemo/VIew/SettingsUC.xaml | 17 ++++++ ModbusDemo/VIew/SettingsUC.xaml.cs | 28 ++++++++++ ModbusDemo/VIewModel/CoilUCViewModel.cs | 17 ++++++ ModbusDemo/VIewModel/MainWindowViewModel.cs | 62 +++++++++++++++++++++ ModbusDemo/VIewModel/RegisterUCViewModel.cs | 13 +++++ ModbusDemo/VIewModel/SettingsUCViewModel.cs | 13 +++++ 14 files changed, 271 insertions(+), 12 deletions(-) create mode 100644 ModbusDemo/Model/MenusInfo.cs create mode 100644 ModbusDemo/VIew/CoilUC.xaml create mode 100644 ModbusDemo/VIew/CoilUC.xaml.cs create mode 100644 ModbusDemo/VIew/RegisterUC.xaml create mode 100644 ModbusDemo/VIew/RegisterUC.xaml.cs create mode 100644 ModbusDemo/VIew/SettingsUC.xaml create mode 100644 ModbusDemo/VIew/SettingsUC.xaml.cs create mode 100644 ModbusDemo/VIewModel/CoilUCViewModel.cs create mode 100644 ModbusDemo/VIewModel/MainWindowViewModel.cs create mode 100644 ModbusDemo/VIewModel/RegisterUCViewModel.cs create mode 100644 ModbusDemo/VIewModel/SettingsUCViewModel.cs diff --git a/ModbusDemo/App.xaml.cs b/ModbusDemo/App.xaml.cs index 4938d93..ca522b2 100644 --- a/ModbusDemo/App.xaml.cs +++ b/ModbusDemo/App.xaml.cs @@ -1,4 +1,6 @@ -using Prism.DryIoc; +using ModbusDemo.VIew; +using ModbusDemo.VIewModel; +using Prism.DryIoc; using Prism.Ioc; using System.Configuration; using System.Data; @@ -25,7 +27,14 @@ namespace ModbusDemo /// protected override void RegisterTypes(IContainerRegistry containerRegistry) { - + //将主页面和主页面的VM结合起来 + containerRegistry.RegisterForNavigation(); + //将线圈操作页面和线圈操作页面的VM结合起来 + containerRegistry.RegisterForNavigation(); + //将寄存器操作页面和寄存器操作页面的VM结合起来 + containerRegistry.RegisterForNavigation(); + //将寄存器操作页面和寄存器操作页面的VM结合起来 + containerRegistry.RegisterForNavigation(); } } diff --git a/ModbusDemo/MainWindow.xaml b/ModbusDemo/MainWindow.xaml index 4ea3813..4e03130 100644 --- a/ModbusDemo/MainWindow.xaml +++ b/ModbusDemo/MainWindow.xaml @@ -7,7 +7,9 @@ xmlns:local="clr-namespace:ModbusDemo" xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:i="http://schemas.microsoft.com/xaml/behaviors" - xmlns:prism="http://prismlibrary.com/" + xmlns:prism="http://prismlibrary.com/" + xmlns:viewmodel="clr-namespace:ModbusDemo.VIewModel" + d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel,IsDesignTimeCreatable=True}" Title="MainWindow" Width="1000" Height="600" @@ -28,7 +30,7 @@ - + @@ -78,7 +80,7 @@ - + diff --git a/ModbusDemo/ModbusDemo.csproj b/ModbusDemo/ModbusDemo.csproj index 6137624..fb832b1 100644 --- a/ModbusDemo/ModbusDemo.csproj +++ b/ModbusDemo/ModbusDemo.csproj @@ -3,7 +3,7 @@ WinExe net8.0-windows - enable + disable enable true @@ -13,10 +13,4 @@ - - - - - - diff --git a/ModbusDemo/Model/MenusInfo.cs b/ModbusDemo/Model/MenusInfo.cs new file mode 100644 index 0000000..e2a6ab9 --- /dev/null +++ b/ModbusDemo/Model/MenusInfo.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ModbusDemo.Model +{ + /// + /// MainWindow左侧的弹出框的列表信息 + /// + public class MenusInfo + { + //图标展示 + public string Icon { get; set; } + //列表的名字 + public string MenuName { get; set; } + //需要跳转的界面名字 + public string ViewName { get; set; } + } +} diff --git a/ModbusDemo/VIew/CoilUC.xaml b/ModbusDemo/VIew/CoilUC.xaml new file mode 100644 index 0000000..30ab690 --- /dev/null +++ b/ModbusDemo/VIew/CoilUC.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/ModbusDemo/VIew/CoilUC.xaml.cs b/ModbusDemo/VIew/CoilUC.xaml.cs new file mode 100644 index 0000000..c27df68 --- /dev/null +++ b/ModbusDemo/VIew/CoilUC.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ModbusDemo.VIew +{ + /// + /// CoilUC.xaml 的交互逻辑 + /// + public partial class CoilUC : UserControl + { + public CoilUC() + { + InitializeComponent(); + } + } +} diff --git a/ModbusDemo/VIew/RegisterUC.xaml b/ModbusDemo/VIew/RegisterUC.xaml new file mode 100644 index 0000000..b0f47d4 --- /dev/null +++ b/ModbusDemo/VIew/RegisterUC.xaml @@ -0,0 +1,15 @@ + + + + + + diff --git a/ModbusDemo/VIew/RegisterUC.xaml.cs b/ModbusDemo/VIew/RegisterUC.xaml.cs new file mode 100644 index 0000000..5740e6f --- /dev/null +++ b/ModbusDemo/VIew/RegisterUC.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ModbusDemo.VIew +{ + /// + /// RegisterUC.xaml 的交互逻辑 + /// + public partial class RegisterUC : UserControl + { + public RegisterUC() + { + InitializeComponent(); + } + } +} diff --git a/ModbusDemo/VIew/SettingsUC.xaml b/ModbusDemo/VIew/SettingsUC.xaml new file mode 100644 index 0000000..89510e3 --- /dev/null +++ b/ModbusDemo/VIew/SettingsUC.xaml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/ModbusDemo/VIew/SettingsUC.xaml.cs b/ModbusDemo/VIew/SettingsUC.xaml.cs new file mode 100644 index 0000000..2b8692d --- /dev/null +++ b/ModbusDemo/VIew/SettingsUC.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ModbusDemo.VIew +{ + /// + /// SettingsUC.xaml 的交互逻辑 + /// + public partial class SettingsUC : UserControl + { + public SettingsUC() + { + InitializeComponent(); + } + } +} diff --git a/ModbusDemo/VIewModel/CoilUCViewModel.cs b/ModbusDemo/VIewModel/CoilUCViewModel.cs new file mode 100644 index 0000000..c5c3d9e --- /dev/null +++ b/ModbusDemo/VIewModel/CoilUCViewModel.cs @@ -0,0 +1,17 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ModbusDemo.VIewModel +{ + /// + /// 这是CoilUC的VM用来支持数据绑定 + /// + public class CoilUCViewModel:BindableBase + { + + } +} diff --git a/ModbusDemo/VIewModel/MainWindowViewModel.cs b/ModbusDemo/VIewModel/MainWindowViewModel.cs new file mode 100644 index 0000000..424dabf --- /dev/null +++ b/ModbusDemo/VIewModel/MainWindowViewModel.cs @@ -0,0 +1,62 @@ +using ModbusDemo.Model; +using Prism.Commands; +using Prism.Mvvm; +using Prism.Regions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ModbusDemo.VIewModel +{ + /// + /// 这个是MainWindow的ViewModel,用来支持数据绑定 + /// + public class MainWindowViewModel : BindableBase + { + //控制页面跳转 + private readonly IRegionManager _regionManager; + + //定义页面跳转命令 + public DelegateCommand NavigationCmm { get; set; } + //定义跳转的列表 + private List _leftMenusList; + public List LeftMenusList + { + get { return _leftMenusList; } + set { _leftMenusList = value; } + } + /// + /// 空参构造,用于xaml的设计时展示 + /// + public MainWindowViewModel() + { + + } + /// + /// + /// + /// + public MainWindowViewModel(IRegionManager regionManager) + { + CreateLeftMenus(); + _regionManager = regionManager; + + NavigationCmm = new DelegateCommand(Navigation); + } + + private void Navigation(MenusInfo info) + { + _regionManager.Regions["ModbusRegion"].RequestNavigate(info.ViewName); + } + + private void CreateLeftMenus() + { + LeftMenusList = new(); + LeftMenusList.Add(new MenusInfo() { Icon = "AllInclusive", MenuName = "线圈操作", ViewName = "CoilUC" }); + LeftMenusList.Add(new MenusInfo() { Icon = "BlurCircular", MenuName = "寄存器操作", ViewName = "RegisterUC" }); + LeftMenusList.Add(new MenusInfo() { Icon = "Settings", MenuName = "串口设置", ViewName = "SettingsUC" }); + } + } +} diff --git a/ModbusDemo/VIewModel/RegisterUCViewModel.cs b/ModbusDemo/VIewModel/RegisterUCViewModel.cs new file mode 100644 index 0000000..2a5747f --- /dev/null +++ b/ModbusDemo/VIewModel/RegisterUCViewModel.cs @@ -0,0 +1,13 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ModbusDemo.VIewModel +{ + class RegisterUCViewModel:BindableBase + { + } +} diff --git a/ModbusDemo/VIewModel/SettingsUCViewModel.cs b/ModbusDemo/VIewModel/SettingsUCViewModel.cs new file mode 100644 index 0000000..0b4f54e --- /dev/null +++ b/ModbusDemo/VIewModel/SettingsUCViewModel.cs @@ -0,0 +1,13 @@ +using Prism.Mvvm; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ModbusDemo.VIewModel +{ + class SettingsUCViewModel:BindableBase + { + } +}