Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid + Binding / 10 сообщений из 10, страница 1 из 1
26.11.2010, 01:05
    #36978073
outerjoin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
Привет всем. Подскажите, где я ошибся. У меня есть класс

Код: plaintext
1.
2.
3.
4.
5.
public class Person
{
    public string Name { get; set; }

    public int Age { get; set; }
}

Есть вьюмодел:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class PersonViewModel
{
    private ObservableCollection<Person> _persons = new ObservableCollection<Person>();

    public ObservableCollection<Person> Persons
    {
        get { return _persons; }
        set { _persons = value; }
    }
}

Есть грид:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Window x:Class="TestWpfApplication.MainWindow" ...
        DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <DataGrid ItemsSource="{Binding PersonViewModel, Path=Persons}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
                <DataGridTextColumn Header="Age" Binding="{Binding Age}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

Список персон я заполняю в конструкторе окна. В итоге ничего не отображается, что тут неправильно?
...
Рейтинг: 0 / 0
26.11.2010, 01:15
    #36978077
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
ItemsSource="{Binding PersonViewModel, Path=Persons}" - тут неправильно

нужно так:
конструктор: this.DataContext = new PersonViewModel();
xaml: ItemsSource="{Binding Persons}"
...
Рейтинг: 0 / 0
26.11.2010, 01:20
    #36978080
outerjoin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
Вестник,

Спасибо, да, так работает. А почему первый вариант не срабатывает?
...
Рейтинг: 0 / 0
26.11.2010, 01:32
    #36978086
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
в первом варианте масло маслянное.
1. фактически вы написали ItemsSource="{Binding Path =PersonViewModel, Path=Persons}", т.к. Path - это свойство по умолчанию
2. ItemsSource="{Binding PersonViewModel}" на самом деле означает ItemsSource = DataContext.PersonViewModel, причем DataContext "наследуется" от родителя по умолчанию
3. вы попытались DataContext установить в само окно (не уверен, что то, что вы написали в Window DataContext = ... имеет смысл. можно смело удалить), но наверняка там нет свойства PersonViewModel
...
Рейтинг: 0 / 0
26.11.2010, 01:35
    #36978088
outerjoin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
Вестник,

Свойство в Window есть, а вот про масло я не знал, большое спасибо
...
Рейтинг: 0 / 0
26.11.2010, 01:39
    #36978090
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
тогда можно было написать DataGrid ItemsSource={Binding PersonViewModel.Persons} или DataGrid DataContext={Binding PersonViewModel} ItemsSource={Binding Persons}
...
Рейтинг: 0 / 0
26.11.2010, 05:17
    #36978144
i
i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
...
Рейтинг: 0 / 0
26.11.2010, 09:12
    #36978226
outerjoin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
Спасибо за ссылку, но я что-то не уловил к чему она здесь
...
Рейтинг: 0 / 0
26.11.2010, 09:49
    #36978275
i
i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
outerjoinСпасибо за ссылку, но я что-то не уловил к чему она здесь
Да, проблемы у тебя были в другом.Невнимательно прочел только объяснения Вестника.
...
Рейтинг: 0 / 0
26.11.2010, 23:02
    #36980413
i
i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataGrid + Binding
и вообще я мало чего читаю в вопросах, а сразу начинаю отвечать
ведь евангелистам платят именно за количество постов
так что не обращайте большого внимания на мои потоки сознания
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataGrid + Binding / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]