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>

 

 

 

 

 

作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以。以下是一个 DataGridComboBoxColumn 在 WPF 中使用的示例,并数据的代码: 1. 首先,你需要在 XAML 中义一个 DataGrid 控件,并在其中添加模板列,以包含 DataGridComboBoxColumn: ```xml <DataGrid AutoGenerateColumns="False"> <DataGrid.Columns> <!-- other columns... --> <DataGridTemplateColumn Header="MyComboBox"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox ItemsSource="{Binding ItemsSource}" DisplayMemberPath="DisplayMember" SelectedValuePath="SelectedValue" SelectedValue="{Binding SelectedItem, Mode=TwoWay}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> ``` 2. 接下来,你需要在代码中获取 DataGridComboBoxColumn,并将其数据: ```csharp private void SetupDataGrid() { // get the DataGridComboBoxColumn var comboBoxColumn = dataGrid.Columns.First(c => c.Header.Equals("MyComboBox")) as DataGridComboBoxColumn; // setup the ItemsSource binding var binding = new Binding("MyItemsSource") { Source = this }; comboBoxColumn.ItemsSourceBinding = binding; // setup the DisplayMemberPath binding binding = new Binding("MyDisplayMemberPath") { Source = this }; comboBoxColumn.DisplayMemberPathBinding = binding; // setup the SelectedValuePath binding binding = new Binding("MySelectedValuePath") { Source = this }; comboBoxColumn.SelectedValuePathBinding = binding; // setup the SelectedValue binding binding = new Binding("MySelectedValue") { Source = this, Mode = BindingMode.TwoWay }; comboBoxColumn.SelectedValueBinding = binding; } // in your ViewModel or code-behind, define the following properties for each of the bindings: public IEnumerable MyItemsSource { get; set; } public string MyDisplayMemberPath { get; set; } public string MySelectedValuePath { get; set; } public object MySelectedValue { get; set; } ``` 这样就可以在 WPF 中使用 DataGridComboBoxColumn 并数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值