WPF使用Prism框架添加View与ViewModel(基础流程)

简单搭建需要6部:

  1. 引用三个程序包:Prism.Core、Prism.Wpf、Prism.Unity
  2. 添加两个文件夹(完全一致):Views、ViewModels
    在这里插入图片描述
  3. 在项目中添加Bootstrapper.cs类
    //作用:初始化prism,做依赖注入等操作
    class Bootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.TryResolve<MainWindow>();
        }
    
        protected override void InitializeShell()
        {
            Application.Current.MainWindow.Show();
        }
    }
    
  4. 在项目App.xaml的类文件App.xaml.cs中初始化Bootstrapper
    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            Bootstrapper boot = new Bootstrapper();
            boot.Run();
        }
    }
    
  5. 添加对应的View
    <UserControl x:Class="ModuleA.Views.MessageView"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:prism="http://prismlibrary.com/"             
                 prism:ViewModelLocator.AutoWireViewModel="True" Padding="25">
        <StackPanel>
            <TextBox Text="{Binding Message}" Margin="5"/>
            <Button Command="{Binding SendMessageCommand}" Content="Send Message" Margin="5"/>
        </StackPanel>
    </UserControl>
    =========================================
    xaml中必须有下边两句
    xmlns:prism="http://prismlibrary.com/"             
    prism:ViewModelLocator.AutoWireViewModel="True"
    
  6. 添加对应的Model
    //要继承BindableBase
    public class MessageViewModel : BindableBase
    {
        IEventAggregator _ea;
    
        private string _message = "Message to Send";
        public string Message
        {
            get { return _message; }
            set { SetProperty(ref _message, value); }
        }
    
        public DelegateCommand SendMessageCommand { get; private set; }
    	//Prism中使用Bootstrapper运行后,此句话才能被执行到,即要有上方的3、4两步
        public MessageViewModel(IEventAggregator ea)
        {
            _ea = ea;
            SendMessageCommand = new DelegateCommand(SendMessage);
        }
    
        private void SendMessage()
        {
            _ea.GetEvent<MessageSentEvent>().Publish(Message);
        }
    }
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值