Как связать со свойством коллекции для сетки данных в Silverlight - PullRequest
1 голос
/ 05 декабря 2011

Я пытался написать пример кода, чтобы проверить заданный вопрос @ Связывание сетки с двумя источниками данных в 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 голосов
/ 05 декабря 2011

Попробуйте это ..

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

Приветствия.

...