zoukankan      html  css  js  c++  java
  • 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>
    

      

      

  • 相关阅读:
    Balanced Binary Tree
    Swap Nodes in Pairs
    Reverse Nodes in k-Group
    Reverse Linked List II
    Remove Nth Node From End of List
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Partition List
    Merge Two Sorted Lists
    【Yii2.0】1.2 Apache检查配置文件语法
  • 原文地址:https://www.cnblogs.com/linlf03/p/2168598.html
Copyright © 2011-2022 走看看