如何在Silverlight中绑定到数据网格的集合的属性

时间:2011-12-05 17:12:05

标签: silverlight data-binding silverlight-4.0 datagrid

我正在尝试编写示例代码来测试问题@ Binding a grid with two datasources in silverlight

我有一个XAML

<Grid x:Name="LayoutRoot" Background="White">
    <sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding WrapperClass}">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Header="Name" Binding="{Binding People.Name, Mode=TwoWay}"/>
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>
</Grid>

我的模型代码

private ItemWrapper _wrapperClass;
    public ItemWrapper WrapperClass
    {
        get
        {
            if (_wrapperClass == null)
                _wrapperClass = new ItemWrapper();
            return _wrapperClass;
        }
    }

项目包装器和人员类定义

public class ItemWrapper
{
    private ObservableCollection<Person> _people;
    public ObservableCollection<Person> People
    {
        get
        {
            return _people;
        }
    }        

    public ItemWrapper()
    {
        _people = new ObservableCollection<Person>();
        _people.Add(new Person { ID = 1, Name = "Name1", JobTitle = 1 });
        _people.Add(new Person { ID = 2, Name = "Name2", JobTitle = 2 });
    }
}

public class Person
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int JobTitle { get; set; }
}  

当我运行程序时,如果绑定属性有效,我希望名称显示在网格中,但事实并非如此。它只显示标题。我在这里错过了什么吗? 谢谢,

1 个答案:

答案 0 :(得分:0)

试试这个..

<Grid x:Name="LayoutRoot" Background="White">
<sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding WrapperClass.People}">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name, Mode=TwoWay}"/>
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

干杯。