上一节我们使用的是一个扩展方法来实现我们的要求
那么现在我们使用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) 上的方法,并声明在加载事件触发时应调用该方法。