WP8 XAML DataTrigger CallMethodAction用于从后面的代码中调用方法

时间:2014-02-28 23:51:12

标签: c# xaml windows-phone-8

我有一个listpicker元素,当listpicker“关闭”或返回其正常状态时,我需要运行一个方法。我的xaml看起来像这样:

<i:Interaction.Triggers>
    <exp:DataTrigger Binding="{Binding ListPickerMode, ElementName=ListPickerAssembly}" Value="Normal">

现在我需要从我的代码后面调用一个方法。我在想要搜索的所有内容的前3页上都有紫色链接。

我看到有一个:

<exp:CallMethodAction

标签看起来可能有效,但我无法弄清楚如何使用它。

非常感谢任何帮助。

更新

搞定了。在我的.cs中,我添加到我的构造函数中:

DataContext = this;

在我的XAML中,我添加了:

x:Name="Page"

然后在我的数据触发器中,我添加了:

<exp:CallMethodAction TargetObject="{Binding DataContext, ElementName=Page}" MethodName="Fire" />

现在调用该方法。

1 个答案:

答案 0 :(得分:1)

CallMethodAction使用TargetObjectMethodName属性来确定要调用的方法。如果你想要一个代码隐藏方法,那么“TargetObject”必须是你的控件/页面/的任何东西。如果它是模板化控件,则使用

<exp:CallMethodAction TargetObject="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                      MethodName="MethodToInvoke" />

如果是页面/控件,那么也许可以使用ElementName绑定(我不是100%确定这实际上有效,但请尝试...)

<phone:Page 
    x:Name="page" ...

    <exp:CallMethodAction TargetObject="{Binding ElementName=page}"
                          MethodName="MethodToInvoke" />

然后,只需确保您的方法是公开的(在这方面它与使用事件处理程序不同)。

public void MethodToInvoke() { ... }