WPF 使用匿名类作为显示的Model
来源:互联网 发布:怎么购买备案域名 编辑:程序博客网 时间:2024/06/04 01:31
在WPF中,一般使用MVVM模式,第一个M为数据显示的模型,一般一个ListView显示对应一个Model,一个ComboBox显示对应一个Model等,需要建立很多Model.
有时候,我们只是在界面显示一次性信息,不需要进行双向绑定、通知更新,这个时候,我们可以使用匿名类来绑定,不需要重新建立Model.
先看我们一般的方法:
建立一个People的Model:
public class People { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
绑定到ListView:
<ListView Name="listView" SelectionChanged="listView_SelectionChanged" SelectionMode="Single"> <ListView.View> <GridView> <GridViewColumn Header="姓名" Width="100" DisplayMemberBinding="{Binding Name}"></GridViewColumn> <GridViewColumn Width="100" Header="年龄" DisplayMemberBinding="{Binding Age}"></GridViewColumn> </GridView> </ListView.View> </ListView>
运行结果:
现在使用匿名类来显示数据,此时,我们没有用到People类:
var list = new List<object>() { new {Id=0,Name="li",Age=22}, new {Id=1,Name="li1",Age=22}, new {Id=2,Name="l2",Age=22}, new {Id=3,Name="l3",Age=22}, new {Id=4,Name="li4",Age=22}, new {Id=5,Name="li5",Age=22}, }; this.listView.ItemsSource = list;
listView_SelectionChanged事件中的处理代码是通用的,不变:
if (e.AddedItems == null || e.AddedItems.Count == 0) return; object selectedItem = e.AddedItems[0]; this.tbMsg.Text = string.Format("ID:{0} Name:{1} Age:{2}", selectedItem.GetType().GetProperty("Id").GetValue(selectedItem, null), selectedItem.GetType().GetProperty("Name").GetValue(selectedItem, null), selectedItem.GetType().GetProperty("Age").GetValue(selectedItem, null));
运行结果如下:
匿名类的类型比较特殊,但是任何类型都是继承自Object的,我们使用匿名类的时候,对于匿名类对象中有哪些属性,需要做到“心知肚明”,否则容易出错。这种方法使用到了反射,性能会有所降低。
阅读全文
0 0
- WPF 使用匿名类作为显示的Model
- WPF 使用DataContext 作为 Binding的源
- 匿名类作为方法的参数
- WPF 的COMBOBOX绑定(匿名类)
- 使用WPF/silverlight作为我们的开发平台
- WPF的ComboBox数据绑定,使用Dictionary作为数据源
- WPF视图绑定的Model类的优雅实现
- MFC使用CButton的显示区域作为画布显示图像
- C# 匿名类的使用
- WPF 中使用XML作为Binding数据源
- 【WPF】ListBox使用UserContrl作为子控件
- Django model作为函数参数的问题
- Android里面的匿名类与匿名内部类使用
- Android里面的匿名类与匿名内部类使用
- Android里面的匿名类与匿名内部类使用
- Android里面的匿名类与匿名内部类使用
- Android里面的匿名类与匿名内部类使用
- Android里面的匿名类与匿名内部类使用
- AC自动机以及KMP模板
- JAVA中的注释
- Python面试题
- 群居影响力
- LVS-NAT
- WPF 使用匿名类作为显示的Model
- 浙江中医药大学暑期训练测试赛八G
- uva10887 Concatenation of Languages
- [洛谷P1273]有线电视网
- C语言之二叉树(包括遍历的实现)
- ViewPager数据加载错乱的问题
- android自定义view的长按事件的执行时间
- Android AES加密工具类
- python爬虫