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

一、WPF绑定各种数据源索引

WPF 绑定各种数据源之Datatable

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

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

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>

  http://www.cnblogs.com/linlf03/archive/2011/09/06/2168598.html

转载于:https://www.cnblogs.com/sjqq/p/7766273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值