第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從子視圖的 ViewModel 中引發(fā) ViewModel 中的事件

如何從子視圖的 ViewModel 中引發(fā) ViewModel 中的事件

C#
蠱毒傳說 2023-04-29 15:33:34
我有一個主視圖包含多個子視圖的應用程序。這些視圖有一個相應的 ViewModel,它顯示模型中包含的一些數(shù)據(jù)和監(jiān)控事件。假設主視圖如下所示:<UserControl x:Class="MyView" Name="myView">    <StackPanel>        <local:MySubView Name="mySubView" someProperty="{Binding DataContext.someField, ElementName=myView}"/>        [...]    </StackPanel></UserControl>子視圖如下所示:<UserControl x:Class="MySubView"             prism:ViewModelLocator.AutoWireViewModel="True">    [...]</UserControl>然后在 MySubViewModel.cs 中,發(fā)生了一些事件,并使用參數(shù)調(diào)用了一個函數(shù):public Event EventHandler<SomeClass> MySubViewEvent;[...]void foo() {    SomeClass o = new SomeClass(...);    MySubViewEvent.Invoke(this, o);}現(xiàn)在,在 MyViewModel.cs 中,我沒有對子視圖的直接引用,因此不能說類似subViewModel.MySubViewEvent += OnSubViewEvent;void OnSubViewEvent(object sender, SomeClass param) { ... }我可以將一些屬性添加到 MySubViewModel 并使其依賴于具有依賴屬性的 MyViewModel 中的某個字段,但是 1. 我怎樣才能反過來做,以便在引發(fā)事件時在 MyViewModel 中調(diào)用某些回調(diào)或事件處理程序在 MySubViewModel 中,以及 2. 我可以以某種方式將事件處理程序作為依賴屬性傳遞嗎?或者我應該為此使用 DependencyProperties 以外的東西嗎?實現(xiàn)這一目標的最有效方法是什么?
查看完整描述

1 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

使用 的教科書示例EventAggregator,但我應該補充一點,子視圖模型也是先查看模型的教科書示例。ViewModelLocator對于獨立的頂級視圖最有用...

話雖如此,在子視圖模型中:

_eventAggregator.GetEvent<MySubViewEvent>().Publish();

別的地方:

public MainViewModel( IEventAggregator eventAggregator )
{
    eventAggregator.GetEvent<MySubViewEvent>().Subscribe( OnSubViewEvent );
}


查看完整回答
反對 回復 2023-04-29
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號