2010-12-10 113 views
2

我知道您将使用此方法调用ViewModel上的方法,但出于好奇,您将如何在实例上连接事件处理程序该视图相当于将其以代码方式连接在后面。CallMethodAction:我如何将一个视图的实例称为TargetObject

+0

你是问你怎么会有援引为_or_你将如何调用一个事件的响应方法事件处理程序作为方法? – AnthonyWJones 2010-12-10 22:48:25

+0

@AnthonyWJones:CallMethodAction上有一个TargetObject属性。我需要引用该触发器所在视图的实例。我能够通过用户控件的名称来引用它,但它给了我空引用错误。 – epitka 2010-12-13 13:23:40

回答

1

我想你可能是在这样的事情后面(忽略这个具体的例子最好是用命令完成)。

<Button Content="Click this"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Click"> 
     <ei:CallMethodAction TargetObject="{Binding}" MethodName="SomeMethod" /> 
     </i:EventTrigger>   
    </i:Interaction.Triggers> 
</Button> 
+1

这不起作用:空绑定语法引用视图的当前数据上下文,而不是视图本身。在MVVM的情况下,这会让你进入虚拟机。 – 2011-04-29 23:54:37

3

如果您的窗口代码隐藏方法中的对象是窗口本身,则TargetObject是具有要调用的方法的对象。你可以通过它的名字绑定到它:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 
      ...etcetera... 
      x:Name="UserControl"> 

所以你CallMethodAction是:

<ei:CallMethodAction MethodName="MyMethod" 
        TargetObject="{Binding ElementName=UserControl, Mode=OneWay}"/> 
相关问题