zoukankan      html  css  js  c++  java
  • MVVM模式中事件响应的一种方式

    MVVM模式中的事件的响应一般有以下几种方式:直接绑定到命令、使用依赖属性、使用Blend自带的两个库(System.Windows.Interactivity.dll和Microsoft.Expression.Interactions.dll)。其中直接绑定到命令的方式只有在部分场景中可用,如Button的click事件;使用依赖属性的方式在之前的

    一篇文章中已讲过(http://www.cnblogs.com/wenjingu/archive/2011/04/12/2013608.html),这种方法较通用,但过于臃肿,而第三种方法则

    简明的多。具体使用方法如下(以ListView 的SelectionChanged事件为例):

    在View中:

                   <ListView Name="lvListView" Grid.Row="0" Margin="4"
                              SelectionMode="Single"
                              ItemsSource="{Binding Path=***}">
                        <i:Interaction.Triggers>                       
                            <i:EventTrigger EventName="SelectionChanged">
                                <ei:CallMethodAction MethodName="SelectionChanged" TargetObject="{Binding}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <ListView.View>
                        </ListView.View>
                    </ListView>

    解释一下,其中:

    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei=http://schemas.microsoft.com/expression/2010/interactions

    EventName:要响应的ListView 的事件名称,此处为SelectionChanged

    MethodName="SelectionChanged":表示ViewModel中响应该事件的函数名

    TargetObject="{Binding}" :表示MethodName对应的函数在DataContext中

    另外,上述两个命名空间应在应用程序项目中引用,否则会报“未找到程序集名称”错误。

    后台使用该事件委托的默认参数就可以获取到这些参数的值。如下:

    在ViewModel中:

    public void SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

    }

    注意:函数必须是Public,否则提示找不到函数。

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/wenjingu/p/2231429.html
Copyright © 2011-2022 走看看