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,否则提示找不到函数。

  • 相关阅读:
    HDUoj(1002)A + B Problem II
    HIT Summer 20180731
    Windows10下python3.5对维基百科语料用word2vec进行训练寻找同义词相似度
    关键词抽取
    win10+python遇到:Using TensorFlow backend.错误
    Windows下Python3.5+numpy+keras+tesorflow的环境配置
    常用的一些序列号
    Umbraco扩展开发
    Umbraco Content属性
    Windows查看端口占用
  • 原文地址:https://www.cnblogs.com/wenjingu/p/2231429.html
Copyright © 2011-2022 走看看