2010-12-10 52 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}"/> 
相關問題