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 + { + } +}