上一節我們使用的是一個擴展方法來實現我們的要求
那么現在我們使用Behavior 來實現這種功能
首先我們需要在View中引用Behavior的 namespace
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
然后我們創建該Behavior的觸發方式
<b:Interaction.Triggers>
<b:EventTrigger EventName="Loaded">
<b:CallMethodAction
MethodName="Load"
TargetObject="{Binding}" />
</b:EventTrigger>
</b:Interaction.Triggers>
<Grid/>
如上面代碼所示,我們使用一個觸發器來觸發。
這種工作方式是事件觸發器將監視指定事件在視圖中觸發,然后我們將調用包含在子元素中的Behavior。
我們將事件觸發器正在監視的事件切換為“Loaded” ,因為這是我們要使用的事件,現在,在 CallMethodAction 行為上,
它需要知道它將調用什么。
因此,目標對象有一個屬性(TargetObject),我們可以將其設置為Binding,相當於將目標設置為當前的View ,表示綁定將產生對整個數據上下文的引用,這是我們在 mvvm中 的 ViewModel。
然后有一個單獨的方法名稱屬性,我們可以將其設置為我們需要觸發的 Load 方法。
這實現了 與附加行為相同的功能。
它使我們可以有效地指向視圖模型(ViewModel) 上的方法,並聲明在加載事件觸發時應調用該方法。