c# - WP8 XAML DataTrigger CallMethodAction 用于从代码后面调用方法

标签 c# xaml windows-phone-8

我有一个列表选择器元素,我需要在列表选择器“关闭”或返回其正常状态时运行一个方法。我的 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" />

它现在调用该方法。

最佳答案

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

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

如果它是一个页面/控件,那么可以使用 ElementName 绑定(bind)(我不是 100% 确定这是否真的有效,但请尝试...)

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

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

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

public void MethodToInvoke() { ... }

关于c# - WP8 XAML DataTrigger CallMethodAction 用于从代码后面调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22108008/

相关文章:

c# - 为多个 VisualStateGroup 实现 VisualStates 的正确方法是什么?

c# - 在后台运行应用程序 : Windows phone 8 phonegap

windows-phone-8 - 如何使用 Github PR 正确更新 Monogame

c# - 如何从Convert中获取ConvertBack参数?

c# - MVC 对象中对象的绑定(bind)列表

c# - 将事件绑定(bind)到 ViewModel : Extending an article

c# - Windows 8 应用程序中的 Windows 身份验证

c# - 使用 Async 和 Await 转换普通的 Http Post Web 请求

javascript - 如何在同一 View 的3个不同 View 模型下使用3个不同的数据表?

c# - 如何生成和显示序列(借阅练习)