wpf prism 订阅功能 代码笔记

8 篇文章 3 订阅
6 篇文章 3 订阅

一、 发布订阅

  1. 新建订阅模型,新建一个Event文件夹,再新建一个类,用于存放订阅消息模型
    在这里插入图片描述
    在这里插入图片描述
  2. 此类继承PubSubEvent,T可以是其他类型,表示这个订阅发布或者接收到的对象类型,下面我定义了一个string的字符串消息对象类型
 public class MessageEvent:PubSubEvent<string>
    {

    }

也可以是其他类型比如自定义类

 public class MessageEvent2 : PubSubEvent<test>
    {

    }
    public class test
    {
       public string Name { get; set; }
       public int age { get; set; }
    }

二、 发布订购取消订阅

  1. 在发布订阅的ViewModel类,构造函数添加参数IEventAggregator aggregator,声明一个全局变量來赋值
 		private IEventAggregator aggregator;
        public ViewCViewModel(IEventAggregator aggregator)
        {
            this.aggregator=aggregator;
        }
  1. 发布订阅,发布一个"Hello ning"字符串的定于,类型取决于MessageEvent,也就是我们第一步创建的订阅模型
aggregator.GetEvent<MessageEvent>().Publish("Hello ning");

3.订购订阅,同样在构造函数添加参数IEventAggregator aggregator,声明一个全局变量來赋值

 private readonly IEventAggregator aggregator;    
        public ViewC(IEventAggregator aggregator)
        {
            InitializeComponent();
            this.aggregator = aggregator;   
            //订购订阅
            aggregator.GetEvent<MessageEvent>().Subscribe(SubMessage);
        }

订购订阅,收到发布订阅后触发SubMessage方法

 aggregator.GetEvent<MessageEvent>().Subscribe(SubMessage);
 
  private void SubMessage(string obj)
        {
            MessageBox.Show(obj);
        }
 
  1. 取消订阅,SubMessage方法是订阅是绑定的回调方法
 aggregator.GetEvent<MessageEvent>().Unsubscribe(SubMessage);
   private void SubMessage(string obj)
        {
            MessageBox.Show(obj);
        }

下面是代码笔记
接收取消订阅笔记

using ModuleA.Event;
using Prism.Events;
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 ModuleA.Views
{
    /// <summary>
    /// ViewC.xaml 的交互逻辑
    /// </summary>
    public partial class ViewC : UserControl
    {
        private readonly IEventAggregator aggregator;    
        public ViewC(IEventAggregator aggregator)
        {
            InitializeComponent();
            this.aggregator = aggregator;
            //订阅,绑定SubMessage方法
            aggregator.GetEvent<MessageEvent>().Subscribe(SubMessage);
        }

        private void SubMessage(string obj)
        {
            //收到发布的订阅后弹窗消息
            MessageBox.Show(obj);
            //取消绑定了SubMessage方法的订阅
            aggregator.GetEvent<MessageEvent>().Unsubscribe(SubMessage);
        }
    }
}

发布订阅代码笔记

 internal class ViewCViewModel
    {
        private IEventAggregator aggregator;
        public ViewCViewModel(IEventAggregator aggregator)
        {

            this.aggregator=aggregator;
        }

        private void Save()
        {
            //发布订阅
            aggregator.GetEvent<MessageEvent>().Publish("Hello ning");

        }

    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF Prism 是一种用于构建可扩展、模块化和易于维护的 WPF 应用程序的框架。其中一个常见的 UI 控件是 ItemsControl,它允许开发人员以非常灵活的方式显示集合中的数据。下面是一个示例代码,演示如何在 WPF Prism 中使用 ItemsControl。 首先,在 XAML 中创建一个 ItemsControl: ```xml <ItemsControl Name="MyItemsControl"> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Age}" /> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> ``` 这个 ItemsControl 使用一个简单的 DataTemplate 来显示一个 Person 对象的名称和年龄。下一步是在代码中填充这个 ItemsControl,我们可以使用 ViewModel 的属性来绑定 ItemsControl 的 ItemsSource 属性: ```csharp public class MyViewModel : BindableBase { private ObservableCollection<Person> _people; public ObservableCollection<Person> People { get { return _people; } set { SetProperty(ref _people, value); } } public MyViewModel() { People = new ObservableCollection<Person> { new Person { Name = "John", Age = 25 }, new Person { Name = "Mary", Age = 30 }, new Person { Name = "Bob", Age = 20 } }; } } ``` 在上面的代码中,我们创建了一个名为 People 的 ObservableCollection,并在构造函数中添加了三个 Person 对象。现在我们可以将这个 ViewModel 绑定到 View 中: ```csharp public partial class MyView : UserControl { public MyView(MyViewModel viewModel) { InitializeComponent(); DataContext = viewModel; } } ``` 最后,我们需要将我们的 ItemsControl 绑定到 ViewModel 的 People 属性: ```xml <ItemsControl Name="MyItemsControl" ItemsSource="{Binding People}" /> ``` 这样,我们就可以在 WPF Prism 中使用 ItemsControl 来显示集合中的数据了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值