首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式执行EventTrigger

以编程方式执行EventTrigger
EN

Stack Overflow用户
提问于 2011-09-09 01:42:22
回答 1查看 555关注 0票数 0

我在Silverlight中定义了如下控件:

代码语言:javascript
复制
<HyperlinkButton x:Name="testHyperlink" Content="Test" FontWeight="Bold" Click="testHyperlink_Click">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
      <ei:ChangePropertyAction PropertyName="Visibility" TargetName="panel1"   
        Value="Collapsed" />
      <ei:ChangePropertyAction PropertyName="Visibility" TargetName="panel2" 
        Value="Visible" />
    </i:EventTrigger>
    <i:EventTrigger>
      <ei:ChangePropertyAction PropertyName="Visibility" TargetName="panel1" 
        Value="Visible" />
      <ei:ChangePropertyAction PropertyName="Visibility" TargetName="panel2" 
        Value="Collapsed" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</HyperlinkButton>

此超链接是DataTemplate的一部分。这就是我使用触发器的原因。当有人单击HyperlinkButton时,将触发一个异步流程。当这个过程完成后,我想执行第二个触发器。从本质上讲,我是在颠倒一些内容的可见性。

我的问题是,当我的事件结束时,我如何触发与HyperlinkButton关联的第二个EventTrigger?

EN

回答 1

Stack Overflow用户

发布于 2011-09-09 02:44:05

不正确地使用交互性EventTriggers。直接回答你的问题,你可以做下一步(我写下它只是因为我不能写出它是不可能的,但我为这个解决方案感到羞愧):

使用公共调用创建自己的操作

代码语言:javascript
复制
    public class MyChangePropertyAction: ChangePropertyAction
    {
        public new void Invoke(object parameter)
        {
            base.Invoke(parameter);
        }
    }

请使用它来代替交互性ChangePropertyAction。现在,您可以直接从后台代码中获取调用操作:

代码语言:javascript
复制
((MyChangePropertyAction)Interaction.GetTriggers(testHyperlink)[1]).Invoke(parameter);

但是,我相信你可以简单地使用MVVM方法,然后做下一步:

  • 在视图模型中创建具有属性更改通知的布尔属性IsBusy;
  • 通过视图模型中的converter;
  • bind命令property;
  • and DoServiceCall从视图模型到"testHyperlink“将其绑定到您的"panel1”可见性属性。在视图模型中进行服务调用并将IsBusy属性更改为true或false,具体取决于是否显示面板。

祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7352285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档