【问题标题】:Alternative to Triggers on WP8WP8 触发器的替代方案
【发布时间】:2013-03-09 16:51:56
【问题描述】:

我了解到,Triggers 在 WP8 的 XAML 中不受支持。什么是替代方法?我想在点击时使用触发器来更改按钮的背景图像。

【问题讨论】:

标签: xaml windows-phone-8


【解决方案1】:

请试试这个。 Windows phone 触发msdn

这里我将图像数据触发器与我的 Boolean 属性绑定,当 Boolean 属性更改时,它将触发并且 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>

【讨论】:

    【解决方案2】:

    您可以,可能只是为图像的“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
        }
    

    希望这会有所帮助!

    【讨论】:

    • 是的,它有点不同,因为您正在以编程方式更改图像(视图)。我建议将事件处理程序(回调/触发器)绑定到 ViewModel 中的一个方法,该方法将负责遵循建议。请记住,MVVM 是建议,而不是要求。对于您的特殊情况,您可能不得不打破规则,因为 WP 本身并不支持您这样做。不过,这只是我的看法。
    • @James Jeffery,如果您认为我的回答已经解决了您的问题,请考虑投赞成票或标记我的回答让其他人知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多