我在Silverlight中定义了如下控件:
<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?
发布于 2011-09-09 02:44:05
不正确地使用交互性EventTriggers。直接回答你的问题,你可以做下一步(我写下它只是因为我不能写出它是不可能的,但我为这个解决方案感到羞愧):
使用公共调用创建自己的操作
public class MyChangePropertyAction: ChangePropertyAction
{
public new void Invoke(object parameter)
{
base.Invoke(parameter);
}
}请使用它来代替交互性ChangePropertyAction。现在,您可以直接从后台代码中获取调用操作:
((MyChangePropertyAction)Interaction.GetTriggers(testHyperlink)[1]).Invoke(parameter);但是,我相信你可以简单地使用MVVM方法,然后做下一步:
祝好运
https://stackoverflow.com/questions/7352285
复制相似问题