WPF绑定各种数据源之object数据源
一、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/archive/2011/09/06/2168598.html,如需转载请自行联系原作者