一、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/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号