一、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,如需转载请自行联系原作者