【问题标题】:How to bind to a property of a collection for a data grid in silverlight如何绑定到 Silverlight 中数据网格的集合属性
【发布时间】:2012-01-13 09:58:46
【问题描述】:

我正在尝试编写示例代码来测试@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; }
}  

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

【问题讨论】:

    标签: silverlight data-binding silverlight-4.0 datagrid


    【解决方案1】:

    试试这个..

    <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>
    

    干杯。

    【讨论】:

    • 是的,这会起作用,但这不是我想要解决的问题。我要解决的是有两个不同的数据源,其中所有列都来自 People,同时会有一个列表框,它的数据源将是 Wrapper 类的另一个属性。
    • 我刚刚回答了“我在这里遗漏什么吗?”,............总之你需要在你的集合(数据源)和控制(数据网格)。我可以给你的另一个提示是绑定本身的一个技巧。您可以使用{Binding Name, Mode=TwoWay, Source={Relative/StaticResource .....}},但您仍然需要在 Item 级别单独收集,因为您无法将 Item 绑定到 Collection
    • 谢谢,我同意绑定模型。我所追求的是stackoverflow.com/questions/4224747/… 中提供的解决方案(正如我在第一个问题中提到的)
    猜你喜欢
    • 2011-02-24
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2011-08-22
    • 1970-01-01
    • 2010-12-21
    • 2012-05-15
    相关资源
    最近更新 更多