| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Bind DataGrid MyClass |
| Автор: DenWPF 2.7.2010, 11:30 |
| не могу понять как так биндить? у меня есть класс MyClass с полями string name и int age |
| Автор: SergeyLoginov 2.7.2010, 12:34 | ||
Если вопрос в том, как создать таблицу DataGrid на основе списка объектов класса MyClass, то надо для начала организовать в контексте данных публичное свойство - коллекцию объектов этого класса (public ObservableCollection<MyClass> MyClassObjects { get; set; }), заполнить ее. И привязать к свойству ItemsSource таблицы:
Таблица будет создана автоматически. Если свойству AutoGenerateColumns таблицы присвоить значение False, то вид и содержание столбцов будут определяться программистом в xaml. В интернете, в общем-то, полно инфы. Поэтому если и задавать тут вопрос, то надо как-то конкретней. |
| Автор: DenWPF 2.7.2010, 13:41 | ||||||
если так
и в коде потом дописать
то выдает ошибку что типо есть уже items. если в хамле указать itemssource то там другая ошибка с Convertom или что то в этом роде. |
| Автор: SergeyLoginov 2.7.2010, 15:35 | ||||||
Дело в том, что описывая таблицу так
Ты задаешь Items коллекцией из одного элемента - объекта GridView. Поэтому и такая ошибка. Если ты таким образом пытаешься задать вид столбцов, то это делается иначе:
При этом получишь ровным счетом то же, что и в случае:
Вообще, задать вид столбцов можно очень даже нетривиальный. Но тут надо поковыряться. Почитай статейки (http://blogs.msdn.com/b/jaimer/archive/2008/08/11/dabbling-around-the-new-wpf-datagrid-part-1.aspx, http://dev.net.ua/blogs/servicedeveloper/archive/2008/09/05/6829.aspx). Попробуй сделать как я описал (с помощью привязки, а не назначения свойству ItemsSource значения в коде). Будет ошибка - предоставь код класса, xaml'а и текст ошибки. |
| Автор: DenWPF 3.7.2010, 10:37 |
| так будет работать, но только если вызвать в коде datagrid.ItemsSource = GetProjects; как обновить datagrid если добавились новые значения автоматически это конечно хорошо, но мне надо не все поля из того класса. |
| Автор: DenWPF 3.7.2010, 13:36 | ||
| А как связать сразу не сколько? ну вот у меня есть класс
и хочется забиндить их Category и PodCategory - в Menu а когда выберается под категория в DataGrid Высвечивается инфа из PodCategory.Project а при выбере в Datagrid элемента то в RichTextBox - высвечивается инфа из Project часть. я щас сам это буду пытаться , но думаю у меня не фига не выйдет. прелогаю проект. http://depositfiles.com/files/u8jfxlvvc |
| Автор: SergeyLoginov 5.7.2010, 08:27 | ||||
Для того, чтобы DataGrid обновлялся автоматически, надо, чтобы свойство GetProjects имело тип ObservableCollection<Project>. Тогда при изменении (добавлении/удалении) элементов этой коллекции будет изменяться и таблица. А чтобы и содержание таблицы было актуальным значениям элементов коллекции, надо чтобы класс Project поддерживал интерфейс INotifyPropertyChanged (поищи про это в инете, информации полно). Добавлено через 1 минуту и 44 секунды
Все это возможно. Разбирайся, задавай конкретные вопросы - получится |