├── .gitignore
├── LICENSE
├── Prism.Examples.sln
├── Prism.Examples
├── App.xaml
├── App.xaml.cs
├── AssemblyInfo.cs
├── Prism.Examples.csproj
├── PrismLogo.png
├── ViewModels
│ └── MainViewModel.cs
└── Views
│ ├── MainView.xaml
│ └── MainView.xaml.cs
├── Prism.Module
├── ModuleModule.cs
├── Prism.Module.csproj
├── ViewModels
│ └── ModuleViewModel.cs
└── Views
│ ├── ModuleView.xaml
│ └── ModuleView.xaml.cs
├── Prism.Mvvm
├── Core
│ └── MessageEvent.cs
├── MvvmModule.cs
├── Prism.Mvvm.csproj
├── ViewModels
│ └── MvvmViewModel.cs
└── Views
│ ├── MvvmView.xaml
│ └── MvvmView.xaml.cs
├── Prism.Navigation
├── NavigationModule.cs
├── Prism.Navigation.csproj
├── ViewModels
│ ├── NavigationViewModel.cs
│ ├── OneViewModel.cs
│ ├── ThreeViewModel.cs
│ └── TwoViewModel.cs
└── Views
│ ├── NavigationView.xaml
│ ├── NavigationView.xaml.cs
│ ├── OneView.xaml
│ ├── OneView.xaml.cs
│ ├── ThreeView.xaml
│ ├── ThreeView.xaml.cs
│ ├── TwoView.xaml
│ └── TwoView.xaml.cs
├── Prism.Region
├── Prism.Region.csproj
├── RegionModule.cs
├── ViewModels
│ └── RegionViewModel.cs
└── Views
│ ├── RegionView.xaml
│ ├── RegionView.xaml.cs
│ ├── ViewA.xaml
│ └── ViewA.xaml.cs
├── README.md
└── img
├── MVVM.png
└── Main.png
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 | [Ll]og/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | project.fragment.lock.json
46 | artifacts/
47 |
48 | *_i.c
49 | *_p.c
50 | *_i.h
51 | *.ilk
52 | *.meta
53 | *.obj
54 | *.pch
55 | *.pdb
56 | *.pgc
57 | *.pgd
58 | *.rsp
59 | *.sbr
60 | *.tlb
61 | *.tli
62 | *.tlh
63 | *.tmp
64 | *.tmp_proj
65 | *.log
66 | *.vspscc
67 | *.vssscc
68 | .builds
69 | *.pidb
70 | *.svclog
71 | *.scc
72 |
73 | # Chutzpah Test files
74 | _Chutzpah*
75 |
76 | # Visual C++ cache files
77 | ipch/
78 | *.aps
79 | *.ncb
80 | *.opendb
81 | *.opensdf
82 | *.sdf
83 | *.cachefile
84 | *.VC.db
85 | *.VC.VC.opendb
86 |
87 | # Visual Studio profiler
88 | *.psess
89 | *.vsp
90 | *.vspx
91 | *.sap
92 |
93 | # TFS 2012 Local Workspace
94 | $tf/
95 |
96 | # Guidance Automation Toolkit
97 | *.gpState
98 |
99 | # ReSharper is a .NET coding add-in
100 | _ReSharper*/
101 | *.[Rr]e[Ss]harper
102 | *.DotSettings.user
103 |
104 | # JustCode is a .NET coding add-in
105 | .JustCode
106 |
107 | # TeamCity is a build add-in
108 | _TeamCity*
109 |
110 | # DotCover is a Code Coverage Tool
111 | *.dotCover
112 |
113 | # NCrunch
114 | _NCrunch_*
115 | .*crunch*.local.xml
116 | nCrunchTemp_*
117 |
118 | # MightyMoose
119 | *.mm.*
120 | AutoTest.Net/
121 |
122 | # Web workbench (sass)
123 | .sass-cache/
124 |
125 | # Installshield output folder
126 | [Ee]xpress/
127 |
128 | # DocProject is a documentation generator add-in
129 | DocProject/buildhelp/
130 | DocProject/Help/*.HxT
131 | DocProject/Help/*.HxC
132 | DocProject/Help/*.hhc
133 | DocProject/Help/*.hhk
134 | DocProject/Help/*.hhp
135 | DocProject/Help/Html2
136 | DocProject/Help/html
137 |
138 | # Click-Once directory
139 | publish/
140 |
141 | # Publish Web Output
142 | *.[Pp]ublish.xml
143 | *.azurePubxml
144 | # TODO: Comment the next line if you want to checkin your web deploy settings
145 | # but database connection strings (with potential passwords) will be unencrypted
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
150 | # checkin your Azure Web App publish settings, but sensitive information contained
151 | # in these scripts will be unencrypted
152 | PublishScripts/
153 |
154 | # NuGet Packages
155 | *.nupkg
156 | # The packages folder can be ignored because of Package Restore
157 | **/packages/*
158 | # except build/, which is used as an MSBuild target.
159 | !**/packages/build/
160 | # Uncomment if necessary however generally it will be regenerated when needed
161 | #!**/packages/repositories.config
162 | # NuGet v3's project.json files produces more ignoreable files
163 | *.nuget.props
164 | *.nuget.targets
165 |
166 | # Microsoft Azure Build Output
167 | csx/
168 | *.build.csdef
169 |
170 | # Microsoft Azure Emulator
171 | ecf/
172 | rcf/
173 |
174 | # Windows Store app package directories and files
175 | AppPackages/
176 | BundleArtifacts/
177 | Package.StoreAssociation.xml
178 | _pkginfo.txt
179 |
180 | # Visual Studio cache files
181 | # files ending in .cache can be ignored
182 | *.[Cc]ache
183 | # but keep track of directories ending in .cache
184 | !*.[Cc]ache/
185 |
186 | # Others
187 | ClientBin/
188 | ~$*
189 | *~
190 | *.dbmdl
191 | *.dbproj.schemaview
192 | *.jfm
193 | *.pfx
194 | *.publishsettings
195 | node_modules/
196 | orleans.codegen.cs
197 |
198 | # Since there are multiple workflows, uncomment next line to ignore bower_components
199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
200 | #bower_components/
201 |
202 | # RIA/Silverlight projects
203 | Generated_Code/
204 |
205 | # Backup & report files from converting an old project file
206 | # to a newer Visual Studio version. Backup files are not needed,
207 | # because we have git ;-)
208 | _UpgradeReport_Files/
209 | Backup*/
210 | UpgradeLog*.XML
211 | UpgradeLog*.htm
212 |
213 | # SQL Server files
214 | *.mdf
215 | *.ldf
216 |
217 | # Business Intelligence projects
218 | *.rdl.data
219 | *.bim.layout
220 | *.bim_*.settings
221 |
222 | # Microsoft Fakes
223 | FakesAssemblies/
224 |
225 | # GhostDoc plugin setting file
226 | *.GhostDoc.xml
227 |
228 | # Node.js Tools for Visual Studio
229 | .ntvs_analysis.dat
230 |
231 | # Visual Studio 6 build log
232 | *.plg
233 |
234 | # Visual Studio 6 workspace options file
235 | *.opt
236 |
237 | # Visual Studio LightSwitch build output
238 | **/*.HTMLClient/GeneratedArtifacts
239 | **/*.DesktopClient/GeneratedArtifacts
240 | **/*.DesktopClient/ModelManifest.xml
241 | **/*.Server/GeneratedArtifacts
242 | **/*.Server/ModelManifest.xml
243 | _Pvt_Extensions
244 |
245 | # Paket dependency manager
246 | .paket/paket.exe
247 | paket-files/
248 |
249 | # FAKE - F# Make
250 | .fake/
251 |
252 | # JetBrains Rider
253 | .idea/
254 | *.sln.iml
255 |
256 | # CodeRush
257 | .cr/
258 |
259 | # Python Tools for Visual Studio (PTVS)
260 | __pycache__/
261 | *.pyc
262 | /ZFS/ZFSDomain/obj
263 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 痕迹
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Prism.Examples.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30709.132
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Examples", "Prism.Examples\Prism.Examples.csproj", "{5265B5B5-9E2B-47E7-9872-74D9F7AB5E0A}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Region", "Prism.Region\Prism.Region.csproj", "{A25343B8-1837-4DD5-950E-428A7A720676}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Module", "Prism.Module\Prism.Module.csproj", "{A9FAEE90-B1EE-46C0-9B84-4337C15423C1}"
11 | EndProject
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Mvvm", "Prism.Mvvm\Prism.Mvvm.csproj", "{3F4B3361-E00B-4E28-8676-059BAFA4F636}"
13 | EndProject
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Navigation", "Prism.Navigation\Prism.Navigation.csproj", "{06DFC650-D7DC-4A8B-B44D-C47A923ED617}"
15 | EndProject
16 | Global
17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
18 | Debug|Any CPU = Debug|Any CPU
19 | Release|Any CPU = Release|Any CPU
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {5265B5B5-9E2B-47E7-9872-74D9F7AB5E0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {5265B5B5-9E2B-47E7-9872-74D9F7AB5E0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {5265B5B5-9E2B-47E7-9872-74D9F7AB5E0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {5265B5B5-9E2B-47E7-9872-74D9F7AB5E0A}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {A25343B8-1837-4DD5-950E-428A7A720676}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {A25343B8-1837-4DD5-950E-428A7A720676}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {A25343B8-1837-4DD5-950E-428A7A720676}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {A25343B8-1837-4DD5-950E-428A7A720676}.Release|Any CPU.Build.0 = Release|Any CPU
30 | {A9FAEE90-B1EE-46C0-9B84-4337C15423C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31 | {A9FAEE90-B1EE-46C0-9B84-4337C15423C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
32 | {A9FAEE90-B1EE-46C0-9B84-4337C15423C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {A9FAEE90-B1EE-46C0-9B84-4337C15423C1}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {3F4B3361-E00B-4E28-8676-059BAFA4F636}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {3F4B3361-E00B-4E28-8676-059BAFA4F636}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {3F4B3361-E00B-4E28-8676-059BAFA4F636}.Release|Any CPU.ActiveCfg = Release|Any CPU
37 | {3F4B3361-E00B-4E28-8676-059BAFA4F636}.Release|Any CPU.Build.0 = Release|Any CPU
38 | {06DFC650-D7DC-4A8B-B44D-C47A923ED617}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {06DFC650-D7DC-4A8B-B44D-C47A923ED617}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {06DFC650-D7DC-4A8B-B44D-C47A923ED617}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {06DFC650-D7DC-4A8B-B44D-C47A923ED617}.Release|Any CPU.Build.0 = Release|Any CPU
42 | EndGlobalSection
43 | GlobalSection(SolutionProperties) = preSolution
44 | HideSolutionNode = FALSE
45 | EndGlobalSection
46 | GlobalSection(ExtensibilityGlobals) = postSolution
47 | SolutionGuid = {D1488786-FE98-4047-A764-B686EACBBEAD}
48 | EndGlobalSection
49 | EndGlobal
50 |
--------------------------------------------------------------------------------
/Prism.Examples/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Prism.Examples/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using Prism.DryIoc;
2 | using Prism.Examples.Views;
3 | using Prism.Ioc;
4 | using Prism.Modularity;
5 | using Prism.Module;
6 | using Prism.Mvvm;
7 | using Prism.Mvvm.Views;
8 | using Prism.Navigation;
9 | using Prism.Region;
10 | using System;
11 | using System.Collections.Generic;
12 | using System.Configuration;
13 | using System.Data;
14 | using System.Linq;
15 | using System.Threading.Tasks;
16 | using System.Windows;
17 |
18 | namespace Prism.Examples
19 | {
20 | ///
21 | /// Interaction logic for App.xaml
22 | ///
23 | public partial class App : PrismApplication
24 | {
25 | protected override Window CreateShell()
26 | {
27 | return Container.Resolve();
28 | }
29 |
30 | protected override void RegisterTypes(IContainerRegistry containerRegistry)
31 | {
32 |
33 | }
34 |
35 | protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
36 | {
37 | moduleCatalog.AddModule();
38 | moduleCatalog.AddModule();
39 | moduleCatalog.AddModule();
40 | moduleCatalog.AddModule();
41 | base.ConfigureModuleCatalog(moduleCatalog);
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Prism.Examples/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows;
2 |
3 | [assembly: ThemeInfo(
4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
5 | //(used if a resource is not found in the page,
6 | // or application resource dictionaries)
7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
8 | //(used if a resource is not found in the page,
9 | // app, or any theme specific resource dictionaries)
10 | )]
11 |
--------------------------------------------------------------------------------
/Prism.Examples/Prism.Examples.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | netcoreapp3.1
6 | true
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Prism.Examples/PrismLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HenJigg/Prism.Examples/39f48c55cdf09f42c522ed1b7567ed6ffda8d0b6/Prism.Examples/PrismLogo.png
--------------------------------------------------------------------------------
/Prism.Examples/ViewModels/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Commands;
2 | using Prism.Mvvm;
3 | using Prism.Regions;
4 | using System;
5 | using System.Collections.Generic;
6 | using System.Collections.ObjectModel;
7 | using System.Text;
8 |
9 | namespace Prism.Examples.ViewModels
10 | {
11 | public class MainViewModel : BindableBase
12 | {
13 | public MainViewModel(IRegionManager regionManager)
14 | {
15 | NavigationModelList = new ObservableCollection();
16 | NavigationModelList.Add("Region");
17 | NavigationModelList.Add("Module");
18 | NavigationModelList.Add("Mvvm");
19 | NavigationModelList.Add("Navigation");
20 | NavigationModelList.Add("Dialog");
21 |
22 | ExecuteCommand = new DelegateCommand(Execute);
23 | this.regionManager = regionManager;
24 | }
25 |
26 | public DelegateCommand ExecuteCommand { get; private set; }
27 |
28 | public ObservableCollection navigationModelList;
29 | private readonly IRegionManager regionManager;
30 |
31 | public ObservableCollection NavigationModelList
32 | {
33 | get { return navigationModelList; }
34 | set { navigationModelList = value; RaisePropertyChanged(); }
35 | }
36 |
37 |
38 | void Execute(string NavigateName)
39 | {
40 | regionManager
41 | .Regions["TabControlRegion"]
42 | ?.RequestNavigate($"{NavigateName}View");
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Prism.Examples/Views/MainView.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
41 |
42 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Prism.Examples/Views/MainView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Prism.Examples.Views
17 | {
18 | ///
19 | /// Interaction logic for MainWindow.xaml
20 | ///
21 | public partial class MainView : Window
22 | {
23 | public MainView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Prism.Module/ModuleModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Module.Views;
4 | using Prism.Regions;
5 |
6 | namespace Prism.Module
7 | {
8 | public class ModuleModule : IModule
9 | {
10 | public void OnInitialized(IContainerProvider containerProvider)
11 | {
12 |
13 | }
14 |
15 | public void RegisterTypes(IContainerRegistry containerRegistry)
16 | {
17 | containerRegistry.RegisterForNavigation();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/Prism.Module/Prism.Module.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp3.1
4 | true
5 | Prism.Module
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Prism.Module/ViewModels/ModuleViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Commands;
2 | using Prism.Mvvm;
3 | using System;
4 | using System.Collections.Generic;
5 | using System.Linq;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 |
9 | namespace Prism.Module.ViewModels
10 | {
11 | public class ModuleViewModel : BindableBase
12 | {
13 | private string title = "Module";
14 |
15 | public string Title
16 | {
17 | get { return title; }
18 | set { title = value; }
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Prism.Module/Views/ModuleView.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 | Click Me!
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Prism.Module/Views/ModuleView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Runtime.InteropServices;
6 | using System.Text;
7 | using System.Threading.Tasks;
8 | using System.Windows;
9 | using System.Windows.Controls;
10 | using System.Windows.Data;
11 | using System.Windows.Documents;
12 | using System.Windows.Input;
13 | using System.Windows.Media;
14 | using System.Windows.Media.Imaging;
15 | using System.Windows.Navigation;
16 | using System.Windows.Shapes;
17 |
18 | namespace Prism.Module.Views
19 | {
20 | ///
21 | /// Interaction logic for ViewA.xaml
22 | ///
23 | public partial class ModuleView : UserControl
24 | {
25 | public ModuleView()
26 | {
27 | InitializeComponent();
28 | }
29 |
30 | private void Hyperlink_Click(object sender, RoutedEventArgs e)
31 | {
32 | Hyperlink link = sender as Hyperlink;
33 | if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
34 | {
35 | var url = link.NavigateUri.AbsoluteUri.Replace("&", "^&");
36 | Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
37 | }
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Prism.Mvvm/Core/MessageEvent.cs:
--------------------------------------------------------------------------------
1 | using Prism.Events;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Text;
5 |
6 | namespace Prism.Mvvm.Core
7 | {
8 | public class MessageEvent : PubSubEvent
9 | {
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Prism.Mvvm/MvvmModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Mvvm.Views;
4 | using Prism.Regions;
5 |
6 | namespace Prism.Mvvm
7 | {
8 | public class MvvmModule : IModule
9 | {
10 | public void OnInitialized(IContainerProvider containerProvider)
11 | {
12 |
13 | }
14 |
15 | public void RegisterTypes(IContainerRegistry containerRegistry)
16 | {
17 | containerRegistry.RegisterForNavigation();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/Prism.Mvvm/Prism.Mvvm.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp3.1
4 | true
5 | Prism.Mvvm
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Prism.Mvvm/ViewModels/MvvmViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Commands;
2 | using Prism.Events;
3 | using Prism.Mvvm;
4 | using Prism.Mvvm.Core;
5 | using System;
6 | using System.Collections.Generic;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 |
11 | namespace Prism.Mvvm.ViewModels
12 | {
13 | public class MvvmViewModel : BindableBase
14 | {
15 | private string title = "MVVM";
16 |
17 | public string Title
18 | {
19 | get { return title; }
20 | set { title = value; }
21 | }
22 |
23 | private string content;
24 |
25 | public string Content
26 | {
27 | get { return content; }
28 | set { content = value; RaisePropertyChanged(); }
29 | }
30 |
31 | public MvvmViewModel(IEventAggregator eventAggregator)
32 | {
33 | #region DelegateCommand
34 |
35 | ClickCommand = new DelegateCommand(() =>
36 | {
37 | Content = "Clear content!";
38 | });
39 |
40 | ClickTCommand = new DelegateCommand(arg =>
41 | {
42 | Content += $"{arg}\r\n";
43 | });
44 |
45 | #endregion
46 |
47 | #region CompositeCommand
48 |
49 | Command1 = new DelegateCommand(() =>
50 | {
51 | Content += "Command1\r\n";
52 | }).ObservesCanExecute(() => Cmd1CanUpdate);
53 | Command2 = new DelegateCommand(() =>
54 | {
55 | Content += "Command2\r\n";
56 | }).ObservesCanExecute(() => Cmd2CanUpdate);
57 |
58 | CommandAll = new CompositeCommand();
59 | CommandAll.RegisterCommand(Command1);
60 | CommandAll.RegisterCommand(Command2);
61 |
62 | #endregion
63 |
64 | #region IEventAggregator
65 |
66 | PublishCommand = new DelegateCommand(PublishMessage);
67 | SubscribeCommand = new DelegateCommand(SubscribeMessage);
68 | UnsubscribeCommand = new DelegateCommand(UnsubscribeMessage);
69 | FilterCommand = new DelegateCommand(Filter);
70 | this.eventAggregator = eventAggregator;
71 |
72 | #endregion
73 | }
74 |
75 | #region DelegateCommand
76 |
77 | public DelegateCommand ClickCommand { get; private set; }
78 |
79 | public DelegateCommand ClickTCommand { get; private set; }
80 |
81 | #endregion
82 |
83 | #region CompositeCommand
84 |
85 | private bool cmd1CanUpdate = true;
86 | private bool cmd2CanUpdate = true;
87 | private readonly IEventAggregator eventAggregator;
88 |
89 | public bool Cmd1CanUpdate
90 | {
91 | get { return cmd1CanUpdate; }
92 | set { cmd1CanUpdate = value; RaisePropertyChanged(); }
93 | }
94 |
95 | public bool Cmd2CanUpdate
96 | {
97 | get { return cmd2CanUpdate; }
98 | set { cmd2CanUpdate = value; RaisePropertyChanged(); }
99 | }
100 |
101 |
102 | public CompositeCommand CommandAll { get; private set; }
103 | public DelegateCommand Command1 { get; private set; }
104 | public DelegateCommand Command2 { get; private set; }
105 |
106 | #endregion
107 |
108 | #region IEventAggregator
109 |
110 | public DelegateCommand PublishCommand { get; private set; }
111 | public DelegateCommand SubscribeCommand { get; private set; }
112 | public DelegateCommand UnsubscribeCommand { get; private set; }
113 |
114 | public DelegateCommand FilterCommand { get; private set; }
115 |
116 | void SubscribeMessage()
117 | {
118 | this.UnsubscribeMessage();
119 |
120 | eventAggregator.GetEvent().Subscribe(OnMessageReceived);
121 | }
122 |
123 | void UnsubscribeMessage()
124 | {
125 | eventAggregator.GetEvent().Unsubscribe(OnMessageReceived);
126 | }
127 |
128 | void PublishMessage(string message)
129 | {
130 | eventAggregator.GetEvent().Publish(message);
131 | }
132 |
133 | ///
134 | /// Filter
135 | ///
136 | private void Filter()
137 | {
138 | //Unsubscribe
139 | eventAggregator.GetEvent().Unsubscribe(OnMessageReceived);
140 |
141 | //Filtering Events
142 | eventAggregator.GetEvent()
143 | .Subscribe(OnMessageReceived, ThreadOption.PublisherThread, false, msg =>
144 | {
145 | if (msg.Equals("Hello")) return true;
146 | else
147 | {
148 | Content += $"{DateTime.Now} : Filter data :{msg} \r\n";
149 | return false;
150 | }
151 | });
152 | }
153 |
154 | void OnMessageReceived(string message)
155 | {
156 | Content += $"{DateTime.Now} Subscribe : {message} \r\n";
157 | }
158 |
159 | #endregion
160 | }
161 | }
162 |
--------------------------------------------------------------------------------
/Prism.Mvvm/Views/MvvmView.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/Prism.Mvvm/Views/MvvmView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Prism.Mvvm.Views
17 | {
18 | ///
19 | /// Interaction logic for ViewA.xaml
20 | ///
21 | public partial class MvvmView : UserControl
22 | {
23 | public MvvmView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Prism.Navigation/NavigationModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Navigation.Views;
4 |
5 | namespace Prism.Navigation
6 | {
7 | public class NavigationModule : IModule
8 | {
9 | public void OnInitialized(IContainerProvider containerProvider)
10 | {
11 | }
12 |
13 | public void RegisterTypes(IContainerRegistry containerRegistry)
14 | {
15 | //Register Test Views
16 | containerRegistry.RegisterForNavigation();
17 | containerRegistry.RegisterForNavigation();
18 | containerRegistry.RegisterForNavigation();
19 |
20 | containerRegistry.RegisterForNavigation();
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Prism.Navigation/Prism.Navigation.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp3.1
4 | true
5 | Prism.Navigation
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Prism.Navigation/ViewModels/NavigationViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Commands;
2 | using Prism.Mvvm;
3 | using Prism.Regions;
4 |
5 | namespace Prism.Navigation.ViewModels
6 | {
7 | public class NavigationViewModel : BindableBase
8 | {
9 | private string title = "Navigation";
10 |
11 | public string Title
12 | {
13 | get { return title; }
14 | set { title = value; }
15 | }
16 |
17 | public NavigationViewModel(IRegionManager regionManager)
18 | {
19 | NavgateCommand = new DelegateCommand(NavgatePage);
20 | NavgateParaCommand = new DelegateCommand(NavgatePage);
21 | this.regionManager = regionManager;
22 | }
23 |
24 | private readonly IRegionManager regionManager;
25 |
26 | public DelegateCommand NavgateCommand { get; private set; }
27 | public DelegateCommand NavgateParaCommand { get; private set; }
28 |
29 | ///
30 | /// Navigation
31 | ///
32 | void NavgatePage()
33 | {
34 | regionManager.RequestNavigate("NavigationContent", "OneView");
35 | }
36 |
37 | ///
38 | /// Navigation parameters
39 | ///
40 | ///
41 | void NavgatePage(string parameter)
42 | {
43 | NavigationParameters param = new NavigationParameters();
44 | param.Add("Value", parameter);
45 |
46 | regionManager.RequestNavigate("NavigationContent", "OneView", param);
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Prism.Navigation/ViewModels/OneViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Mvvm;
2 | using Prism.Regions;
3 |
4 | namespace Prism.Navigation.ViewModels
5 | {
6 | public class OneViewModel : BindableBase, INavigationAware
7 | {
8 | private string title = "OneView";
9 |
10 | public string Title
11 | {
12 | get { return title; }
13 | set { title = value; RaisePropertyChanged(); }
14 | }
15 |
16 | private string navigationParameter = string.Empty;
17 |
18 | public string NavigationParameter
19 | {
20 | get { return navigationParameter; }
21 | set { navigationParameter = value; RaisePropertyChanged(); }
22 | }
23 |
24 |
25 | public bool IsNavigationTarget(NavigationContext navigationContext)
26 | {
27 | var param = navigationContext.Parameters.GetValue("Value");
28 |
29 | if (NavigationParameter.Equals(param))
30 | return true;
31 | else
32 | return false;
33 | }
34 |
35 | public void OnNavigatedFrom(NavigationContext navigationContext)
36 | {
37 |
38 | }
39 |
40 | public void OnNavigatedTo(NavigationContext navigationContext)
41 | {
42 | if (navigationContext.Parameters.ContainsKey("Value"))
43 | NavigationParameter = navigationContext.Parameters.GetValue("Value");
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Prism.Navigation/ViewModels/ThreeViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Mvvm;
2 |
3 | namespace Prism.Navigation.ViewModels
4 | {
5 | public class ThreeViewModel : BindableBase
6 | {
7 | private string title = "ThreeView";
8 |
9 | public string Title
10 | {
11 | get { return title; }
12 | set { title = value; RaisePropertyChanged(); }
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Prism.Navigation/ViewModels/TwoViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Mvvm;
2 |
3 | namespace Prism.Navigation.ViewModels
4 | {
5 | public class TwoViewModel : BindableBase
6 | {
7 | private string title = "TwoView";
8 |
9 | public string Title
10 | {
11 | get { return title; }
12 | set { title = value; RaisePropertyChanged(); }
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/NavigationView.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
42 |
46 |
47 |
48 |
52 |
53 |
58 |
59 |
60 |
61 |
62 |
67 |
72 |
73 |
74 |
75 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/NavigationView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Navigation;
14 | using System.Windows.Shapes;
15 |
16 | namespace Prism.Navigation.Views
17 | {
18 | ///
19 | /// Interaction logic for ViewA.xaml
20 | ///
21 | public partial class NavigationView : UserControl
22 | {
23 | public NavigationView()
24 | {
25 | InitializeComponent();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/OneView.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
18 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/OneView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Windows;
5 | using System.Windows.Controls;
6 | using System.Windows.Data;
7 | using System.Windows.Documents;
8 | using System.Windows.Input;
9 | using System.Windows.Media;
10 | using System.Windows.Media.Imaging;
11 | using System.Windows.Navigation;
12 | using System.Windows.Shapes;
13 |
14 | namespace Prism.Navigation.Views
15 | {
16 | ///
17 | /// OneView.xaml 的交互逻辑
18 | ///
19 | public partial class OneView : UserControl
20 | {
21 | public OneView()
22 | {
23 | InitializeComponent();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/ThreeView.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/ThreeView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Windows;
5 | using System.Windows.Controls;
6 | using System.Windows.Data;
7 | using System.Windows.Documents;
8 | using System.Windows.Input;
9 | using System.Windows.Media;
10 | using System.Windows.Media.Imaging;
11 | using System.Windows.Navigation;
12 | using System.Windows.Shapes;
13 |
14 | namespace Prism.Navigation.Views
15 | {
16 | ///
17 | /// ThreeView.xaml 的交互逻辑
18 | ///
19 | public partial class ThreeView : UserControl
20 | {
21 | public ThreeView()
22 | {
23 | InitializeComponent();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/TwoView.xaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Prism.Navigation/Views/TwoView.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Text;
4 | using System.Windows;
5 | using System.Windows.Controls;
6 | using System.Windows.Data;
7 | using System.Windows.Documents;
8 | using System.Windows.Input;
9 | using System.Windows.Media;
10 | using System.Windows.Media.Imaging;
11 | using System.Windows.Navigation;
12 | using System.Windows.Shapes;
13 |
14 | namespace Prism.Navigation.Views
15 | {
16 | ///
17 | /// TwoView.xaml 的交互逻辑
18 | ///
19 | public partial class TwoView : UserControl
20 | {
21 | public TwoView()
22 | {
23 | InitializeComponent();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Prism.Region/Prism.Region.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netcoreapp3.1
4 | true
5 | Prism.Region
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Prism.Region/RegionModule.cs:
--------------------------------------------------------------------------------
1 | using Prism.Ioc;
2 | using Prism.Modularity;
3 | using Prism.Region.Views;
4 | using Prism.Regions;
5 |
6 | namespace Prism.Region
7 | {
8 | public class RegionModule : IModule
9 | {
10 | public void OnInitialized(IContainerProvider containerProvider)
11 | {
12 |
13 | }
14 |
15 | public void RegisterTypes(IContainerRegistry containerRegistry)
16 | {
17 | containerRegistry.RegisterForNavigation();
18 | containerRegistry.RegisterForNavigation();
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/Prism.Region/ViewModels/RegionViewModel.cs:
--------------------------------------------------------------------------------
1 | using Prism.Commands;
2 | using Prism.Mvvm;
3 | using Prism.Regions;
4 |
5 | namespace Prism.Region.ViewModels
6 | {
7 | public class RegionViewModel : BindableBase
8 | {
9 | private string title = "Region";
10 |
11 | public string Title
12 | {
13 | get { return title; }
14 | set { title = value; }
15 | }
16 |
17 | private readonly IRegionManager regionManager;
18 |
19 | public RegionViewModel(IRegionManager regionManager)
20 | {
21 | this.regionManager = regionManager;
22 |
23 | ShowCommand = new DelegateCommand(arg =>
24 | {
25 | //Add a view to the Region
26 | regionManager.Regions["RegionContent"].RequestNavigate("ViewA");
27 | });
28 |
29 | RemoveCommand = new DelegateCommand