@@ -1,4 +1,6 @@ | |||||
using Prism.DryIoc; | |||||
using ModbusDemo.VIew; | |||||
using ModbusDemo.VIewModel; | |||||
using Prism.DryIoc; | |||||
using Prism.Ioc; | using Prism.Ioc; | ||||
using System.Configuration; | using System.Configuration; | ||||
using System.Data; | using System.Data; | ||||
@@ -25,7 +27,14 @@ namespace ModbusDemo | |||||
/// <param name="containerRegistry"></param> | /// <param name="containerRegistry"></param> | ||||
protected override void RegisterTypes(IContainerRegistry containerRegistry) | protected override void RegisterTypes(IContainerRegistry containerRegistry) | ||||
{ | { | ||||
//将主页面和主页面的VM结合起来 | |||||
containerRegistry.RegisterForNavigation<MainWindow, MainWindowViewModel>(); | |||||
//将线圈操作页面和线圈操作页面的VM结合起来 | |||||
containerRegistry.RegisterForNavigation<CoilUC, CoilUCViewModel>(); | |||||
//将寄存器操作页面和寄存器操作页面的VM结合起来 | |||||
containerRegistry.RegisterForNavigation<RegisterUC, RegisterUCViewModel>(); | |||||
//将寄存器操作页面和寄存器操作页面的VM结合起来 | |||||
containerRegistry.RegisterForNavigation<SettingsUC, SettingsUCViewModel>(); | |||||
} | } | ||||
} | } | ||||
@@ -7,7 +7,9 @@ | |||||
xmlns:local="clr-namespace:ModbusDemo" | xmlns:local="clr-namespace:ModbusDemo" | ||||
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" | xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes" | ||||
xmlns:i="http://schemas.microsoft.com/xaml/behaviors" | 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" | Title="MainWindow" | ||||
Width="1000" | Width="1000" | ||||
Height="600" | Height="600" | ||||
@@ -28,7 +30,7 @@ | |||||
<ListBox x:Name="lbMenu" ItemsSource="{Binding LeftMenusList}" ItemContainerStyle="{StaticResource LeftMenuStyle}" SelectionChanged="lbMenu_SelectionChanged"> | <ListBox x:Name="lbMenu" ItemsSource="{Binding LeftMenusList}" ItemContainerStyle="{StaticResource LeftMenuStyle}" SelectionChanged="lbMenu_SelectionChanged"> | ||||
<i:Interaction.Triggers> | <i:Interaction.Triggers> | ||||
<i:EventTrigger EventName="SelectionChanged"> | <i:EventTrigger EventName="SelectionChanged"> | ||||
<i:InvokeCommandAction Command="{Binding NagivgCmm}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}"> | |||||
<i:InvokeCommandAction Command="{Binding NavigationCmm}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}"> | |||||
</i:InvokeCommandAction> | </i:InvokeCommandAction> | ||||
</i:EventTrigger> | </i:EventTrigger> | ||||
</i:Interaction.Triggers> | </i:Interaction.Triggers> | ||||
@@ -78,7 +80,7 @@ | |||||
</md:ColorZone> | </md:ColorZone> | ||||
<!-- 区域 --> | <!-- 区域 --> | ||||
<ContentControl prism:RegionManager.RegionName="SrganRegion"> | |||||
<ContentControl prism:RegionManager.RegionName="ModbusRegion"> | |||||
</ContentControl> | </ContentControl> | ||||
</DockPanel> | </DockPanel> | ||||
</md:DrawerHost> | </md:DrawerHost> | ||||
@@ -3,7 +3,7 @@ | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<OutputType>WinExe</OutputType> | <OutputType>WinExe</OutputType> | ||||
<TargetFramework>net8.0-windows</TargetFramework> | <TargetFramework>net8.0-windows</TargetFramework> | ||||
<Nullable>enable</Nullable> | |||||
<Nullable>disable</Nullable> | |||||
<ImplicitUsings>enable</ImplicitUsings> | <ImplicitUsings>enable</ImplicitUsings> | ||||
<UseWPF>true</UseWPF> | <UseWPF>true</UseWPF> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
@@ -13,10 +13,4 @@ | |||||
<PackageReference Include="Prism.DryIoc" Version="8.1.97" /> | <PackageReference Include="Prism.DryIoc" Version="8.1.97" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Folder Include="VIew\" /> | |||||
<Folder Include="VIewModel\" /> | |||||
<Folder Include="Model\" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace ModbusDemo.Model | |||||
{ | |||||
/// <summary> | |||||
/// MainWindow左侧的弹出框的列表信息 | |||||
/// </summary> | |||||
public class MenusInfo | |||||
{ | |||||
//图标展示 | |||||
public string Icon { get; set; } | |||||
//列表的名字 | |||||
public string MenuName { get; set; } | |||||
//需要跳转的界面名字 | |||||
public string ViewName { get; set; } | |||||
} | |||||
} |
@@ -0,0 +1,12 @@ | |||||
<UserControl x:Class="ModbusDemo.VIew.CoilUC" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:ModbusDemo.VIew" | |||||
mc:Ignorable="d" | |||||
d:DesignHeight="450" d:DesignWidth="800"> | |||||
<Grid> | |||||
<TextBlock Text="Coil" FontSize="60"></TextBlock> | |||||
</Grid> | |||||
</UserControl> |
@@ -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 | |||||
{ | |||||
/// <summary> | |||||
/// CoilUC.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class CoilUC : UserControl | |||||
{ | |||||
public CoilUC() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,15 @@ | |||||
<UserControl | |||||
x:Class="ModbusDemo.VIew.RegisterUC" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:ModbusDemo.VIew" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<Grid> | |||||
<TextBlock Text="Register" FontSize="30"> | |||||
</TextBlock> | |||||
</Grid> | |||||
</UserControl> |
@@ -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 | |||||
{ | |||||
/// <summary> | |||||
/// RegisterUC.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class RegisterUC : UserControl | |||||
{ | |||||
public RegisterUC() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,17 @@ | |||||
<UserControl | |||||
x:Class="ModbusDemo.VIew.SettingsUC" | |||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" | |||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | |||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" | |||||
xmlns:local="clr-namespace:ModbusDemo.VIew" | |||||
d:DesignHeight="450" | |||||
d:DesignWidth="800" | |||||
mc:Ignorable="d"> | |||||
<StackPanel> | |||||
<TextBlock Text="Settings" FontSize="30"> | |||||
</TextBlock> | |||||
<TextBlock Text="Settings" FontSize="30"> | |||||
</TextBlock> | |||||
</StackPanel> | |||||
</UserControl> |
@@ -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 | |||||
{ | |||||
/// <summary> | |||||
/// SettingsUC.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class SettingsUC : UserControl | |||||
{ | |||||
public SettingsUC() | |||||
{ | |||||
InitializeComponent(); | |||||
} | |||||
} | |||||
} |
@@ -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 | |||||
{ | |||||
/// <summary> | |||||
/// 这是CoilUC的VM用来支持数据绑定 | |||||
/// </summary> | |||||
public class CoilUCViewModel:BindableBase | |||||
{ | |||||
} | |||||
} |
@@ -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 | |||||
{ | |||||
/// <summary> | |||||
/// 这个是MainWindow的ViewModel,用来支持数据绑定 | |||||
/// </summary> | |||||
public class MainWindowViewModel : BindableBase | |||||
{ | |||||
//控制页面跳转 | |||||
private readonly IRegionManager _regionManager; | |||||
//定义页面跳转命令 | |||||
public DelegateCommand<MenusInfo> NavigationCmm { get; set; } | |||||
//定义跳转的列表 | |||||
private List<MenusInfo> _leftMenusList; | |||||
public List<MenusInfo> LeftMenusList | |||||
{ | |||||
get { return _leftMenusList; } | |||||
set { _leftMenusList = value; } | |||||
} | |||||
/// <summary> | |||||
/// 空参构造,用于xaml的设计时展示 | |||||
/// </summary> | |||||
public MainWindowViewModel() | |||||
{ | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="regionManager"></param> | |||||
public MainWindowViewModel(IRegionManager regionManager) | |||||
{ | |||||
CreateLeftMenus(); | |||||
_regionManager = regionManager; | |||||
NavigationCmm = new DelegateCommand<MenusInfo>(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" }); | |||||
} | |||||
} | |||||
} |
@@ -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 | |||||
{ | |||||
} | |||||
} |
@@ -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 | |||||
{ | |||||
} | |||||
} |