您的位置:首页 > 移动开发 > Objective-C

WPF绑定各种数据源之object数据源

2015-05-26 11:00 316 查看
一、WPF绑定各种数据源索引

WPF绑定各种数据源之Datatable

WPF绑定各种数据源之object数据源

WPF绑定各种数据源之xml数据源

WPF绑定各种数据源之元素控件属性

Binding的基础可参考WPF绑定基础

二、WPF绑定各种数据源之object数据源

前台代码:

<Window.Resources>

<Con:BackgroundConverterx:Key=
"BackgroundConverter"
/>

</Window.Resources>


  用ListView绑定object数据源

<ListViewHeight=
"262"
Margin=
"0,0,45,51"
VerticalAlignment=
"Bottom"
ItemsSource=
"{Binding}"
Name=
"listView2"
HorizontalAlignment=
"Right"
Width=
"310"
>

<ListView.View>

<GridView>

<GridViewColumnHeader=
"编号"
DisplayMemberBinding=
"{BindingPath=ID}"
Width=
"100"
/>

<GridViewColumnHeader=
"姓名"
DisplayMemberBinding=
"{BindingPath=Name}"
Width=
"100"
/>

<GridViewColumnHeader=
"年龄"
Width=
"100"
>

<GridViewColumn.CellTemplate>

<DataTemplate>

<TextBlockGrid.Column=
"1"
Text=
"{BindingPath=Age}"
Foreground=
"{Binding
Path=Age,Converter={StaticResourceBackgroundConverter}}"
/>

</DataTemplate>

</GridViewColumn.CellTemplate>

</GridViewColumn>

</GridView>

</ListView.View>

</ListView>


后台代码:

public
class
BackgroundConverter:IValueConverter

{

#regionIValueConverterMembers


public
object
Convert(
object
value,TypetargetType,
object
parameter,System.Globalization.CultureInfoculture)

{

Colorcolor=
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,TypetargetType,
object
parameter,System.Globalization.CultureInfoculture)

{

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++)

{

Personp=
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:BackgroundConverterx:Key=
"BackgroundConverter"
/>

<ObjectDataProviderx:Key=
"myPerson"
ObjectType=
"{x:TypeCon:Person}"
MethodName=
"getPersonInfo"
/>

</Window.Resources>


 此时的myPerson对象数据源在是Person类中的getPersonInfo方法。

 (【补充】如果getPersonInfo在不同的类库中,则用如下方式

<ObjectDataProviderx:Key=
"myPerson2"
ObjectType=
"{x:TypeClassLibrary1:Person}"
MethodName=
"getPersonInfo"
/>


  使用,ClassLibrary1是类库的名称。并添加命名空间

xmlns:ClassLibrary1=
"clr-namespace:ClassLibrary1;assembly=ClassLibrary1"


  )

<ListViewHeight=
"262"
Margin=
"0,0,45,51"
DataContext=
"{StaticResourcemyPerson}"
VerticalAlignment=
"Bottom"
ItemsSource=
"{Binding}"
Name=
"listView2"
HorizontalAlignment=
"Right"
Width=
"310"
>

<ListView.View>

<GridView>

<GridViewColumnHeader=
"编号"
DisplayMemberBinding=
"{BindingPath=ID}"
Width=
"100"
/>

<GridViewColumnHeader=
"姓名"
DisplayMemberBinding=
"{BindingPath=Name}"
Width=
"100"
/>

<GridViewColumnHeader=
"年龄"
Width=
"100"
>

<GridViewColumn.CellTemplate>

<DataTemplate>

<TextBlockGrid.Column=
"1"
Text=
"{BindingPath=Age}"
Foreground=
"{Binding
Path=Age,Converter={StaticResourceBackgroundConverter}}"
/>

</DataTemplate>

</GridViewColumn.CellTemplate>

</GridViewColumn>

</GridView>

</ListView.View>

</ListView>


作者:WorkHardWorkSmart

出处:http://www.cnblogs.com/linlf03/

欢迎任何形式的转载,未经作者同意,请保留此段声明!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: