WP8的替代触发器

3

我看到XAML for WP8不支持触发器,那么有什么替代方法吗?我想在一个按钮被点击时使用触发器来改变背景图片。


1
本文建议使用Visual State,并提供了一个示例(以及其他示例链接):http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/77604041-b991-4f1e-9adb-78c701ac4d9a/,也许会有所帮助? - lhan
2个回答

0
请尝试这个。 Windows手机触发msdn 在这里,我将图像数据触发器与我的布尔属性绑定,当布尔属性更改时,它将触发并且setter将会触发。确保您的属性使用INofityPropertyChanged实现。
 xmlns:ec="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" x:Class="XXX_XXXX"
<Image Source="/Assets/Images/Tick.png"
                   Stretch="None"
                   HorizontalAlignment="Stretch" 
                   VerticalAlignment="Top">
                <interactivity:Interaction.Triggers>
                    <ec:DataTrigger Binding="{Binding IsTapped}" Value="True">
                        <ec:ChangePropertyAction PropertyName="Source">
                            <ec:ChangePropertyAction.Value>

                                <BitmapImage UriSource="/Assets/Images/Close.png"/>
                            </ec:ChangePropertyAction.Value>
                        </ec:ChangePropertyAction>
                    </ec:DataTrigger>
                </interactivity:Interaction.Triggers>
            </Image>

0
你可以为图像附加一个“Tap”事件的事件处理程序。没有代码示例,我不太确定我能帮多少忙;但是,我在下面粘贴了一些代码:
XAML
                <Image Source="/Assets/awesomeImg.png" Tap="AwesomeImg_Tap"/>

代码后台(C#)

private void AwesomeImg_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
      YourImageName.ImageSource = //code here to URI of image
    }

希望这对你有所帮助!

1
是的,因为您正在以编程方式更改图像(视图),所以有点不同。我建议将事件处理程序(回调/触发器)绑定到ViewModel中的一个方法,该方法将负责遵循建议。请记住,MVVM只是建议,而不是要求。对于您的特殊情况,您可能不得不打破规则,因为WP没有为您本地支持此功能。尽管如此,这只是我的个人意见。 - YnotDraw
@James Jeffery,如果您认为我的回答解决了您的问题,请考虑给我点赞或标记我的答案,让其他人知道。 - YnotDraw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接