国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CommunityToolkit.Mvvm學(xué)習(xí)筆記(3)——ObservableRecipient

這篇具有很好參考價(jià)值的文章主要介紹了CommunityToolkit.Mvvm學(xué)習(xí)筆記(3)——ObservableRecipient。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、ObservableRecipient

1.1. 定義

所處的位置,
命名控件:Microsoft.Toolkit.Mvvm.ComponentModel
程序集:Microsoft.Toolkit.Mvvm.dll
包:Microsoft.Toolkit.Mvvm

ObservableRecipient類型是可監(jiān)視對象(Observable objects)的一個(gè)基類,這些對象扮演著消息接收者的角色。ObservableRecipient類是ObservableObject的拓展,它也提供了使用IMessenger類型的內(nèi)置支持。
CommunityToolkit.Mvvm學(xué)習(xí)筆記(3)——ObservableRecipient
繼承關(guān)系:
Object→ObservableObject→ObservableRecipient

相關(guān)的平臺API:

  • ObservableRecipient
  • ObservableObject
  • IMessenger
  • WeakReferenceMessenger
  • IRecipient<TMessage>
  • PropertyChangedMessage<T>

1.2. 它是如何工作的

ObservableRecipient設(shè)計(jì)出來是用來作為viewmodel的基礎(chǔ)(或者說基對象)的,它也使用了IMessenger的特性,因?yàn)樗鼮镮Messenger提供了內(nèi)置支持。特別地:

  • 它有一個(gè)無參的構(gòu)造函數(shù)和一個(gè)接受IMessenger實(shí)例的構(gòu)造函數(shù),被用作依賴注入。
    它還暴露了一個(gè)Messenger屬性,可用來在viewmodel中收發(fā)消息。如果使用了無參構(gòu)造函數(shù),WeakReferenceMessenger.Default實(shí)例將會被分配給Messenger屬性。
  • 它暴露了IsActive屬性以激活(Activate)/禁用(Deactivate)viewmodel。在這種情況下,激活意味著viewmodel被標(biāo)記為正在使用,例如,它將開始監(jiān)聽已注冊的消息,執(zhí)行其他的設(shè)置操作等。有兩個(gè)相關(guān)的方法OnActivated 和 OnDeactivated,在屬性改變值時(shí),它們會被調(diào)用。默認(rèn)情況下,OnDeactivated會自動(dòng)從所有已注冊的消息中注銷當(dāng)前實(shí)例。為了獲得最佳效果和避免內(nèi)存泄漏,建議使用OnActivate來注冊消息,使用OnDeactivate來做清理操作。這種模式允許viewmodel啟停多次,同時(shí)可以安全地收集,而不會在每次停用的時(shí)候產(chǎn)生內(nèi)存泄漏的風(fēng)險(xiǎn)。默認(rèn)情況下,OnActivate會自動(dòng)注冊所有通過IRecipient<TMessage>接口定義的消息處理器。
  • 它暴露了Broadcast<T>(T, T, string)方法,該方法通過IMessenger實(shí)例(可以從Messenger屬性獲得)發(fā)送PropertyChangedMessage<T>消息。這可以用來輕松傳播viewmodel中的變化,而不需要手動(dòng)地檢索Messenger實(shí)例來使用。該方法通過各種SetProperty方法的重載來使用,這些方法還有一個(gè)附加的bool broadcast屬性,用于指示是否也發(fā)送消息。

下面有一個(gè)viewmodel的示例,它在激活時(shí)接收LoggedInUserRequestMessage 消息:

public class MyViewModel : ObservableRecipient, IRecipient<LoggedInUserRequestMessage>
{
	public void Receive(LoggedInUserRequestMessage message)
	{
		// 處理消息的代碼
	}
}

在以上例子中,OnActivated自動(dòng)注冊實(shí)例作為LoggedInUserRequestMessage 消息的接收者,使用該方法作為要調(diào)用的動(dòng)作。使用IRecipient<TMessage>接口并不是強(qiáng)制的,注冊也可以手動(dòng)完成(甚至只使用內(nèi)聯(lián)lambda表達(dá)式):文章來源地址http://www.zghlxwxcb.cn/news/detail-501532.html

public class MyViewModel : ObservableRecipient
{
	protected override void OnActivated()
	{
		// Using a method group...
        Messenger.Register<MyViewModel, LoggedInUserRequestMessage>(this, (r, m) => r.Receive(m));

        // ...or a lambda expression
        Messenger.Register<MyViewModel, LoggedInUserRequestMessage>(this, (r, m) =>
        {
            // Handle the message here
        });
	}
	private void Receive(LoggedInUserRequestMessage message)
    {
        // Handle the message here
    }
}

到了這里,關(guān)于CommunityToolkit.Mvvm學(xué)習(xí)筆記(3)——ObservableRecipient的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CommunityToolkit.Mvvm----配置

    CommunityToolkit.Mvvm----配置

    一、介紹: CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前稱為 Microsoft.Toolkit.Mvvm)是一個(gè)現(xiàn)代、快速和模塊化的 MVVM 庫。 它是 .NET 社區(qū)工具包的一部分,圍繞以下原則生成: 獨(dú)立于平臺和運(yùn)行時(shí) - .NET Standard 2.0、.NET Standard 2.1 和 .NET 6??(與 UI 框架無關(guān)) 易于選取和使用 - 對

    2024年04月17日
    瀏覽(23)
  • WPF CommunityToolkit.Mvvm

    WPF CommunityToolkit.Mvvm

    CommunityToolkit.Mvvm(以下簡稱Toolkit)是WPF最有名的兩個(gè)框架,一個(gè)是Prism,另一個(gè)就是Toolkit。 Prism可以看我的Prism詳解 WPF Prims框架詳解 Toolkit 官方文檔 用 CommunityToolkit.Mvvm 加速 MVVM 開發(fā)流程 Toolkit簡單復(fù)寫了我們常用的兩個(gè)方法 一個(gè)是 SetProperty,一個(gè)是RelayCommand SetProperty,通知

    2024年02月12日
    瀏覽(22)
  • CommunityToolkit.Mvvm系列文章導(dǎo)航

    包? CommunityToolkit.Mvvm ?(又名 MVVM 工具包,以前名為? Microsoft.Toolkit.Mvvm ) 是一個(gè)現(xiàn)代、快速且模塊化的 MVVM 庫。 它是 .NET 社區(qū)工具包的一部分,圍繞以下原則構(gòu)建: 平臺和運(yùn)行時(shí)獨(dú)立 ?-? .NET Standard 2.0 、? .NET Standard 2.1 ?和? .NET 6 ?? (UI Framework 不可知) 易于選取和使用 ?-

    2023年04月15日
    瀏覽(43)
  • WPF CommunityToolkit.Mvvm Messenger通訊

    WPF CommunityToolkit.Mvvm Messenger通訊

    CommunityToolkit.Mvvm Messenger 十月的寒流: 如何使用 CommunityToolkit.Mvvm 中的 Messenger 來進(jìn)行 ViewModel 之間的通信 我這里只講簡單的弱Messenger,這個(gè)是Toolkit幫我們封裝好的,里面好像有什么垃圾回收什么的,里面怎么運(yùn)行的我也沒去研究。我這里就簡單講解一下怎么用 WeakReferenceMess

    2024年02月09日
    瀏覽(16)
  • CommunityToolkit.Mvvm8.1 MVVM工具包安裝引用指南(1)

    CommunityToolkit.Mvvm8.1 MVVM工具包安裝引用指南(1)

    ? 本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/category/2297596.html ? ? 0.說明 CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名為 Microsoft.Toolkit.Mvvm)是一個(gè)現(xiàn)代、快速且模塊化的 MVVM 庫。 它支持:.NET Standard 2.0、 .NET Standard 2.1 和 .NET 6(UI Framework 不支持) ? 文檔地址: https://learn.microsoft.com/z

    2023年04月09日
    瀏覽(18)
  • wpf CommunityToolkit.Mvvm8.1 MVVM工具包安裝引用指南

    wpf CommunityToolkit.Mvvm8.1 MVVM工具包安裝引用指南

    ? 本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/category/2297596.html ? ? 0.說明 CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名為 Microsoft.Toolkit.Mvvm)是一個(gè)現(xiàn)代、快速且模塊化的 MVVM 庫。 它支持:.NET Standard 2.0、 .NET Standard 2.1 和 .NET 6(UI Framework 不支持) ? 文檔地址: https://learn.microsoft.com/z

    2023年04月08日
    瀏覽(22)
  • CommunityToolkit.Mvvm8.1 消息通知(4)

    本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) ? 希望提到的知識對您有所提示,同時(shí)歡迎交流和指正 作者:aierong 出處:https://www.cnblogs.com/aierong ? 為了應(yīng)用程序的不同模塊分離,減少模塊之間引用,CommunityToolkit.Mvvm提供了消息通知功

    2023年04月14日
    瀏覽(31)
  • [.NET/WPF] CommunityToolkit.Mvvm 異步指令

    [.NET/WPF] CommunityToolkit.Mvvm 異步指令

    我們在開發(fā)中, 經(jīng)常會有這樣的需求: 點(diǎn)擊按鈕后, 進(jìn)行一些耗時(shí)的工作 工作進(jìn)行時(shí), 按鈕不可再次被點(diǎn)擊 工作進(jìn)行時(shí), 會顯示進(jìn)度條, 或者 “加載中” 的動(dòng)畫 CommunityToolkit.Mvvm 中的 RelayCommand 除了支持最簡單的同步方法, 還支持以 Task 作為返回值的異步方法, 當(dāng)我們?yōu)檫@樣的異

    2024年02月12日
    瀏覽(16)
  • CommunityToolkit.Mvvm8.1 viewmodel使用-舊式寫法(2)

    ? 本系列文章導(dǎo)航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) ? ? CommunityToolkit.Mvvm8.1有一個(gè)重大更新的功能:源生成器功能,它極大簡化我們的mvvm代碼 但是本篇先總結(jié)一下原寫法,下篇再總結(jié)源生成器功能 ? 必須繼承:ObservableObject ? 幾個(gè)關(guān)鍵點(diǎn)

    2023年04月09日
    瀏覽(23)
  • VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架構(gòu)開發(fā)

    VisualStudio[WPF/.NET]基于CommunityToolkit.Mvvm架構(gòu)開發(fā)

    項(xiàng)目模板選擇如下: 暫時(shí)隨機(jī)填一個(gè)目標(biāo)框架,待會改: 雙擊“解決方案資源管理器”中項(xiàng)目CU-APP, 打開項(xiàng)目工程文件CU-APP.csproj, 修改目標(biāo)框架 TargetFramework 為.net framework 4.7.2 ;? C#語言版本 LangVersion 為? 9.0 ?\\\"工具\(yùn)\\" - \\\"NuGet包管理器\\\",“管理解決方案的NuGet程序包(N)”,? 或者,

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包