UWP DataGrid绑定复杂对象

在UWP中基本上看不到DataTable的使用, 所以一般DataGrid绑定的都是对象的列表。下面是一个比较简单的绑定代码。

XAML:


     <controls:DataGrid Name="SecondGrid" ItemsSource="{Binding Persons}" AutoGenerateColumns="False"  Grid.Row="2">
            <controls:DataGrid.Columns>
                <controls:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <controls:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
                <controls:DataGridTextColumn Header="City" Binding="{Binding City}"/>
            </controls:DataGrid.Columns>
        </controls:DataGrid>

C#:

namespace UWPDataGrid
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string City { get; set; }
    }

    public sealed partial class MainPage : Page
    {
      
        public List<Person> Persons = new List<Person>();
        public MainPage()
        {
            this.InitializeComponent();

            Persons.Add(new Person() { Name = "Alan", Age = 12, City = "Shanghai" });
            Persons.Add(new Person() { Name = "Blair", Age = 22, City = "Manhantan" });
            Persons.Add(new Person() { Name = "Clair", Age = 26, City = "Berlin" });
            SecondGrid.ItemsSource = Persons;
        }
    }
}

可以看到上面的绑定非常简单,因为对象属性都是简单属性。如果我们遇到对象的属性比较复杂的时候,比如List, Dictionary, Class, 那我们如何绑定呢?

请参看下面的示例,然后大家自由发挥,自由扩展吧。 

public class Car
    {
        public string Brand { get; set; }
        public string Model { get; set; }
    }
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string City { get; set; }

        public List<string> Pets { get; set; }
        public Dictionary<string, int> ChildrenAge { get; set; }
        public List<Car> Cars { get; set; }
    }

 public sealed partial class MainPage : Page
    {
      
        public List<Person> Persons = new List<Person>();
        public MainPage()
        {
            this.InitializeComponent();

            Persons.Add(new Person()
            {
                Name = "Alan",
                Age = 42,
                City = "Shanghai",
                Pets = new List<string> { "Dog", "Cat", "Pig" },
                ChildrenAge = new Dictionary<string, int>() { { "First", 12 }, { "Second", 6 } },
                Cars = new List<Car>() { new Car() { Brand="BMW", Model="750"} }
            });
            Persons.Add(new Person() 
            {   Name = "Blair", Age = 32, City = "Manhantan",
                Pets = new List<string> { "Dog" },
                ChildrenAge = new Dictionary<string, int>() { { "First", 4 }, { "Second", 2 } },
                Cars = new List<Car>() { new Car() { Brand = "Ford", Model = "focus" } }
            });
            Persons.Add(new Person()
            {
                Name = "Clair",Age = 26,City = "Berlin",
                Pets = new List<string> { "Cat", "Pig" },
                ChildrenAge = new Dictionary<string, int>() { { "First", 1 } },
                Cars = new List<Car>() { new Car() { Brand = "Volkswargen", Model = "Lavida" } }
            });
            SecondGrid.ItemsSource = Persons;
        }
        <controls:DataGrid Name="SecondGrid" ItemsSource="{Binding Persons}" AutoGenerateColumns="False"  Grid.Row="2">
            <controls:DataGrid.Columns>
                <controls:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <controls:DataGridTextColumn Header="Age" Binding="{Binding Age}"/>
                <controls:DataGridTextColumn Header="City" Binding="{Binding City}"/>
                <controls:DataGridTextColumn Header="Pet1" Binding="{Binding Pets[0]}"/>
                <controls:DataGridTextColumn Header="Car1 Brand" Binding="{Binding Cars[0].Brand}"/>
                <controls:DataGridTextColumn Header="First Child Age" Binding="{Binding ChildrenAge[First]}"/>
            </controls:DataGrid.Columns>
        </controls:DataGrid>

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值