Mvvm绑定datagrid或listview的selectItems的方法[转]
单选,很简单,将SelectedItem与ViewModel的属性进行双向绑定就OK了
多选,由于ListView的SelectedItems不能进行绑定,需要将ListView的SelectionChanged事件转换成命令绑定到ViewModel,同时将SelectedItems传递到ViewModel层
示例:
首先添加程序集引用System.Windows.Interactivity.dll
xaml
添加命名空间引用
- HTML code
-
<UserControl ...
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
/>
- HTML code
-
<ListView ItemsSource="{Binding Source={StaticResource CustomerGroups}}"
x:Name="dataGrid1" >
<ListView.GroupStyle>
<StaticResourceExtension ResourceKey="CustomerGroupStyle" />
</ListView.GroupStyle>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn DisplayMemberBinding="{Binding DisplayName,Mode=OneWay}" Header="Name" />
<GridViewColumn DisplayMemberBinding="{Binding Email,Mode=OneWay}" Header="E-Mail" />
<GridViewColumn DisplayMemberBinding="{Binding TotalSales,Mode=OneWay, ConverterCulture=zh-CN, StringFormat=c}" Header="Total Sales" />
</GridView.Columns>
</GridView>
</ListView.View>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectionChangeCommand}" CommandParameter="{Binding SelectedItems,ElementName=dataGrid1}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ListView>
viewmodel:
- C# code
-
public RelayCommand<IList> SelectionChangeCommand
{
get
{
return new RelayCommand<IList>
(
(selectedItems) =>
{
TotalSelectedSales = 0; CustomerViewModel firstCustomer = null; if (selectedItems.Count > 0)
firstCustomer = selectedItems[0] as CustomerViewModel; // 将选中第一条CustomerViewModel传递到主页面
selectedCustomer = firstCustomer; // 更新按钮的可执行状态
EditCustomerCommand.RaiseCanExecuteChanged();
DeleteCustomerCommand.RaiseCanExecuteChanged(); foreach (dynamic Item in selectedItems)
TotalSelectedSales += Item.TotalSales; RaisePropertyChanged("TotalSelectedSales");
}
);
}
}
Mvvm绑定datagrid或listview的selectItems的方法[转]的更多相关文章
- WPF中TreeView控件SelectedItemChanged方法的MVVM绑定
问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限.比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscription ...
- “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置
这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一 ...
- .NET CORE(C#) WPF简单菜单MVVM绑定
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF简单菜单MVVM绑定 阅读导航 本文背景 代码实现 本文参考 ...
- Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate
Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...
- WPF DataGrid与ListView性能对比与场景选择
开门见山的说 性能对比: 在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方) DataGrid渲染10列50行随机字符280ms ...
- WPF DataGrid 自动生成行号的方法(通过修改RowHeaderTemplate的方式)
WPF中的DataGrid自动生成行号的方法有很多,这里记录了一种通过修改 RowHeaderTemplate的方式来生成行号: 方法一: xaml界面: <Window ... xmlns:l ...
- ListView的getFirstVisiblePosition等方法返回的是哪个对象
int firstPosition = lisView.getFirstVisiblePosition(); int lastPosition = lisView.getLastVisiblePosi ...
- android 修改listview item view 的方法(转)
android 修改listview item view 的方法 具体的解答办法很简单: 代码如下 : 1.获取需要更新的view int visiblePosition = mListView. ...
- ListView单条刷新的方法
我们一般会调用notifydatasetchange通知listView刷新界面.但会造成getView方法被多次调用(画面上能显示多少就会被调用多少次),如果是很明确的知道只更新了list中的某一个 ...
随机推荐
- IIS7 上传 下载文件大小限制的设置
IIS7 上传 下载文件大小限制的设置 本文来自IISBOY网 一.找到修改大小的配置文件和配置节点 本文来自IISBOY网 打开你系统盘(我是C盘),找到 C:\Windows\System32\i ...
- 修改maven中的jdk版本
1.修改项目的pom.xml文件 <build> <plugins> <plugin> <groupId>org.apache.maven.plugin ...
- win7不能在同一窗口打开文件夹,解决办法
1.由于IE浏览器的主页被劫持,总是忽然弹出搜狗的主页,有的时候,忽然弹出IE浏览器(主页是搜狗),然后又自行关闭,我X,我的电脑竟然不受我控制,这可得了,这里我又要骂宁美国度了,made,组装机装了 ...
- c#基础语言编程-程序集和反射
程序集 什么是程序集? 1.程序集(assembly)是一个及一个以上托管模块,以及一些资源文件的逻辑组合. 2.程序集是组件复用,以及实施安全策略和版本策略的最小单位. 3.程序集是包含一个或者多个 ...
- HTTPClient实现java自动登录人人网
参考网址: https://passport.csdn.net/account/login http://www.iteye.com/topic/638206 httpClient http://b ...
- DB2单个DB重启
db2单个数据库重启 . -------------------------------------------------------------- db2 connect to bpm user ...
- GDB调试总结__1
该博客旨在分享IT技术心得和实际工作中遇到问题的解决方法,下面是新浪博客地址http://blog.sina.com.cn/qianyumolu,则为分享经济.行业趋势.心灵文章等,有兴趣的朋友能够踩 ...
- vim 语法高亮
1 .配置文件的位置 在文件夹 /etc/ 以下.有个名为vimrc 的文件.这是系统中公共的vim配置文件.对全部用户都有效.而在每一个用户的主文件夹下,都能够自己建立私有的配置文件,命名为:&qu ...
- ssl https服务 需要 php5.3以上
php 5.2 升级 5.3 http://wdlinux.cn/bbs/viewthread.php?tid=37512&highlight=5.3 默认的升级不支持 pdo 升级前编辑升级 ...
- 常用Content-type汇总
Content-Type,内容类型,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式.什么编码读取这个文件.这里汇总一下常用的,所有资料来源于网络,未经测试: 文件后缀 处理方式 .* ...