一、WPF绑定各种数据源索引
Binding的基础可参考WPF 绑定基础
二、WPF绑定各种数据源之object数据源
前台代码:
<Window.Resources> <Con:BackgroundConverter x:Key= "BackgroundConverter" /> </Window.Resources> |
用ListView绑定object数据源
<ListView Height= "262" Margin= "0,0,45,51" VerticalAlignment= "Bottom" ItemsSource= "{Binding}" Name= "listView2" HorizontalAlignment= "Right" Width= "310" > <ListView.View> <GridView> <GridViewColumn Header= "编号" DisplayMemberBinding= "{Binding Path=ID}" Width= "100" /> <GridViewColumn Header= "姓名" DisplayMemberBinding= "{Binding Path=Name}" Width= "100" /> <GridViewColumn Header= "年龄" Width= "100" > <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Grid.Column= "1" Text= "{Binding Path=Age}" Foreground= "{Binding Path=Age, Converter={StaticResource BackgroundConverter}}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> |
后台代码:
public class BackgroundConverter : IValueConverter { #region IValueConverter Members public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { Color color = new Color(); int num = int .Parse(value.ToString()); if (num > 100) color = Colors.Yellow; else if (num < 50) color = Colors.LightGreen; else color = Colors.LightPink; return new SolidColorBrush(color); } public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion } |
下面是Person类
public class Person { private string _ID; private string _name; private string _age; public string ID { get ; set ; } public string Name { get ; set ; } public int Age { get ; set ; } } |
//下面是获得数据源,当然数据源可以是数据库中读出的数据,此处直接创建数据源
//创建数据源,当然也可以从数据库中获得数据源 private IList<Person> getPersonInfo() { IList<Person> pList = new List<Person>(); for ( int i = 40; i < 60; i++) { Person p = new Person(); p.ID = "ID" +i; p.Name = "Nmae" +i; p.Age = i+1; pList.Add(p); } return pList; } public Window1() { InitializeComponent(); listView2.DataContext = getPersonInfo(); } |
效果图:
2. 使用Object的另一种方式
<Window.Resources> <Con:BackgroundConverter x:Key= "BackgroundConverter" /> <ObjectDataProvider x:Key= "myPerson" ObjectType= "{x:Type Con:Person}" MethodName= "getPersonInfo" /> </Window.Resources> |
此时的myPerson对象数据源在是Person类中的getPersonInfo方法。
(【补充】如果getPersonInfo在不同的类库中,则用如下方式
<ObjectDataProvider x:Key= "myPerson2" ObjectType= "{x:Type ClassLibrary1:Person}" MethodName= "getPersonInfo" /> |
使用,ClassLibrary1是类库的名称。并添加命名空间
xmlns:ClassLibrary1= "clr-namespace:ClassLibrary1;assembly=ClassLibrary1" |
)
<ListView Height= "262" Margin= "0,0,45,51" DataContext= "{StaticResource myPerson}" VerticalAlignment= "Bottom" ItemsSource= "{Binding}" Name= "listView2" HorizontalAlignment= "Right" Width= "310" > <ListView.View> <GridView> <GridViewColumn Header= "编号" DisplayMemberBinding= "{Binding Path=ID}" Width= "100" /> <GridViewColumn Header= "姓名" DisplayMemberBinding= "{Binding Path=Name}" Width= "100" /> <GridViewColumn Header= "年龄" Width= "100" > <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Grid.Column= "1" Text= "{Binding Path=Age}" Foreground= "{Binding Path=Age, Converter={StaticResource BackgroundConverter}}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> |
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?