12、ViewModelLocator-Prism的MVVM,可以关联View 和ViewModel

  1、将App.xaml中的StartupUri="MainWindow.xaml"删除。

  2、使用NuGet安装Prism.Wpf、Prism.Core、Prism.Unity。

  3、添加类“Bootstrapper”,编辑如下:

 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 Microsoft.Practices.Unity;
 8 using Prism.Mvvm;
 9 using Prism.Unity;
10 using ViewModelCustom.ViewModel;
11 using ViewModelCustom.Views;
12 
13 namespace ViewModelCustom
14 {
15     class BootStarpper:UnityBootstrapper
16     {
17         protected override DependencyObject CreateShell()
18         {
19             return Container.Resolve<MainWindow>();
20         }
21 
22         protected override void InitializeShell()
23         {
24             Application.Current.MainWindow.Show();
25         }
26 
27         protected override void ConfigureViewModelLocator()
28         {
29             base.ConfigureViewModelLocator();
30 
31             ViewModelLocationProvider.Register<MainWindow,CustomViewModel>();
32         }
33     }
34 }

 

  4、创建文件夹Views,将MainWindow.xaml移动到此文件夹中。创建文件夹ViewModels,新建类MainWindowViewModel.cs。注意:VM类的名称一定是V+“ViewModel”,例如MainWindow+“ViewModel”。

    

 1 <Window x:Class="ViewModelLocator.Views.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:ViewModelLocator"
 7         xmlns:prism="http://prismlibrary.com/"
 8         prism:ViewModelLocator.AutoWireViewModel="True"
 9         mc:Ignorable="d"
10         Title="{Binding Title}" Height="350" Width="525">
11     <Grid>
12         
13     </Grid>
14 </Window>
 1 using Prism.Mvvm;
 2 
 3 namespace ViewModelLocator.ViewModels
 4 {
 5     class MainWindowViewModel:BindableBase
 6     {
 7         private string _title = "Prism Unity Application"; 8 9 public string Title 10  { 11 get { return _title; } 12 set { SetProperty(ref _title, value); } 13  } 14  } 15 }

  5、修改App.xaml

 1 using System.Collections.Generic;
 2 using System.Configuration;
 3 using System.Data;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6 using System.Windows;
 7 
 8 namespace BootstrapperShell
 9 {
10     /// <summary>
11     /// App.xaml 的交互逻辑
12     /// </summary>
13     public partial class App : Application
14     {
15         protected override void OnStartup(StartupEventArgs e)
16         {
17             base.OnStartup(e);
18 
19             var bootstrapper = new Bootstrapper();
20             bootstrapper.Run();
21         }
22     }
23 }

   6、最终结果:

 

转载于:https://www.cnblogs.com/bjxingch/articles/9562542.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值