一、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>