Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF数据网格,绑定包含<;int,object>;。如何显示对象';s的成员?_C#_Wpf_Datagrid_.net 4.0 - Fatal编程技术网

C# WPF数据网格,绑定包含<;int,object>;。如何显示对象';s的成员?

C# WPF数据网格,绑定包含<;int,object>;。如何显示对象';s的成员?,c#,wpf,datagrid,.net-4.0,C#,Wpf,Datagrid,.net 4.0,我最近刚开始使用WPF(.NET4.0),没有使用正确的MVVM 所以我有一个 SortedList<int, Person> SortedList Person是一个拥有公共成员的类:姓名、年龄、地址 我只想在DataGrid中显示Person和Name、Age、Address字段。我到底是怎么做到的?DataContext,ItemSource? 它必须是一个分类列表,因为人员的顺序非常重要 请帮忙,谢谢 请尝试此方法: XAML: 当您将itemsource设置到Sorte

我最近刚开始使用WPF(.NET4.0),没有使用正确的MVVM

所以我有一个

SortedList<int, Person>
SortedList
Person是一个拥有公共成员的类:姓名、年龄、地址

我只想在DataGrid中显示Person和Name、Age、Address字段。我到底是怎么做到的?DataContext,ItemSource? 它必须是一个分类列表,因为人员的顺序非常重要

请帮忙,谢谢

请尝试此方法: XAML:


当您将
itemsource
设置到
SortedList
时,每个项目都将是
KeyValuePair
类型,因此您可以获取
,这将包含您的
姓名
年龄
地址
属性

<DataGrid AutoGenerateColumns="False">
    <DataGridTextColumn Header="Name" Binding="{Binding Path=Value.Name}"/>
    <DataGridTextColumn Header="Age" Binding="{Binding Path=Value.Age}"/>
    <DataGridTextColumn Header="Address" Binding="{Binding Path=Value.Address}"/>
</DataGrid>


谢谢!很多建议,你和dkozl都知道答案。它起作用了!不客气,我很高兴我是第一个回答。请投我一票。谢谢!如果要改为设置ItemsSource,则无需设置DataContext
private void dataGridInit()
{
    SortedList<int, Person> list = new SortedList<int, Person>();
    list.Add(2, new Person() {Name = "James", Age = 30, Address = "some place" });
    list.Add(1, new Person() { Name = "Kitty", Age = 28, Address = "some place" });
    list.Add(3, new Person() { Name = "Deko", Age = 28, Address = "some place" });

    dataGrid.DataContext = list;
    dataGrid.ItemsSource = list;
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}
<DataGrid AutoGenerateColumns="False">
    <DataGridTextColumn Header="Name" Binding="{Binding Path=Value.Name}"/>
    <DataGridTextColumn Header="Age" Binding="{Binding Path=Value.Age}"/>
    <DataGridTextColumn Header="Address" Binding="{Binding Path=Value.Address}"/>
</DataGrid>