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

  • 相关阅读:
    深入理解 IE haslayout
    electron的应用
    自动化批量录入Web系统
    Flask + Vue的一个示例
    如何从git仓库里下载单个文件夹
    Django项目设置首页
    简单更改Django Admin登录页面
    Flask web项目使用.flaskenv文件
    Flask 里url_for的使用
    使用Flask-migrate迁移数据库
  • 原文地址:https://www.cnblogs.com/wenjingu/p/2231429.html
Copyright © 2011-2022 走看看