Как сделать таблицу в wpf

Призрак Басенджи

Записки начинающего программиста.

29 марта 2019 г.

Основы работы с WPF DataGrid. Часть 1. – Введение

Создание нового приложения WPF

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

Конструктор [или дизайнер] IDE Visual Studio не только создает макет компонента, но и создает код XAML. Нижеприведенный листинг демонстрирует типичный XAML-код, созданный конструктором.

Элемент DataGrid в XAML представляет компонент DataGrid, а свойства Width и Height – ширину и высоту DataGrid. Свойство Margin задает поля размещения DataGrid в окне. Свойство Name представляет имя компонента, являющегося уникальным идентификатором компонента. А теперь изменим имя компонента, отредактировав свойство Name. Измененный код XAML смотрим в листинге 2.

Привязка данных [Data Binding]

Коллекция данных [Data Collection]

Давайте создадим класс, который имеет некоторые общедоступные свойства. Фрагмент кода в листинге 3 определяет класс Author с пятью общедоступными свойствами. Эти свойства таковы: ID, Name, BookTitle и Sci-Fi с соответствующими типами int, string, string и bool.

Фрагмент кода в листинге 4 создает список объектов-авторов с помощью метода LoadCollectionData.

ItemsSource

Свойство ItemsSource компонента DataGrid является ключом к привязке данных. Пользователь может связать любой источник данных, который реализует IEnuemerable. Каждая строка в DataGrid привязана к объекту источника данных, и каждый столбец – к свойству объектов источника данных. Чтобы отобразить коллекцию данных в DataGrid, нам просто нужно привязать его свойство ItemsSource к коллекции Author, которую мы создали в классе AuthorCollection. Щелкаем по форме, используем окном свойств и создаем обработчик события Window Loaded. В обработчике событий Window Loaded мы создаем объект AuthorCollection и вызываем его метод LoadAuthors() для привязка к DataGrid, задав свойство ItemsSource в DataGrid.

Источник

Практическое руководство. Построение таблицы программным способом

В следующих примерах показано, как программным способом создать Table и заполнить его содержимым. Содержимое таблицы делится на пять строк (представленные TableRow объектами, содержащимися в RowGroups объекте) и шесть столбцов (представленных TableColumn объектами). Строки используются для различных целей представления, включая строку названия, предназначенную для заголовка всей таблицы, строку заголовка для описания столбцов данных в таблице и строку нижнего колонтитула для сводной информации. Обратите внимание, что строки «title», «header» и «footer» не встроены в таблицу. Это просто строки с разными характеристиками. Ячейки таблицы содержат фактическое содержимое, которое может состоять из текста, изображений или практически любого другого пользовательский интерфейс элемента.

Пример

Пример

Затем создается шесть TableColumn объектов и добавляется в Columns коллекцию таблицы с применением определенного форматирования.

Обратите внимание, что в Columns коллекции таблицы используется стандартная индексация, начинающаяся с нуля.

Пример

Затем создается строка заголовка и добавляется в таблицу с определенным форматированием. Строка названия содержит одну ячейку, охватывающую все шесть столбцов таблицы.

Пример

Далее создается и добавляется в таблицу строка заголовка, а ячейки в строке заголовка создаются и заполняются содержимым.

Пример

Затем создается и добавляется в таблицу ряд данных, а ячейки в этой строке создаются и заполняются содержимым. Построение этой строки аналогично построению строки заголовка с применением немного другого форматирования.

Пример

Наконец, создается, добавляется и форматируется строка нижнего колонтитула. Как и строка названия, нижний колонтитул содержит одну ячейку, которая включает все шесть столбцов в таблице.

Источник

C# WPF Создание динамической таблицы обращение к ней и отрисовка заголовка в DataGrid

Стоит задача выводить в WPF DataGrid примерно сл. информацию ( xlm см. ниже)

Отличаются таблицы количеством колонок. Таблицы выводить получилось, но не удается отрисовать заголовок (элемент colnames из xml ). Проект был изначально на Delphi, так это всё делалось связкой DataSet через DataSource к DBGrid. Обращался к необходимому полю примерно FDataSet.FieldByName(‘name’).AsString и получал всё, что необходимо. А тут даже и не знаю как решить свой вопрос. Прошу, выручите рабочим примером динамического создания таблицы и обращения к ней.

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

2 ответа 2

У меня работает вот такой код:

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

Обратите внимание, что у нас ItemsSource отделён от XML, и значит, нужно будет его оттуда вытаскивать вручную, если нужно сохранить изменения.

Код, который приведён сверху, разумеется, прототип. Чтобы правильно с ним работать, давайте-ка улучшим его в сторону поддержки MVVM: выгрузим операции с данными из представления. (Имейте в виду, сейчас код работает с данными в VM, но нужно по идее вытеснить его в модель.)

Итак, наша VM. Базовый класс для VM с реализацией INotifyPropertyChanged берём, например, отсюда.

Теперь XAML. Он довольно простой, большая часть работы у нас в VM.

Источник

WPF DataGrid. Борьба за Template

Надеюсь, своей статьей я внесу ясность в вопросе связки XML представления DataGrid с его кодовым собратом. Для этого лучше всего использовать конкретный пример. Итак, нам необходимо разместить список элементов некоторой структуры в таблице. Допустим сами элементы выглядят в коде следующим образом:

Соответственно, их список будет выглядеть как:

Теперь перейдем к DataGrid. Так как это все таки WPF, то вытянуть его на форму можно и руками. Пусть IDE сама отпишет для него код.

Здесь вручную я задал только AutoGenerateColumns=«False», так как в дальнейшем мы будем редактировать колонки таблицы сами.

Далее нам необходимо привязать данные к таблице, при этом каждое поле элемента должно соответствовать колонке таблицы.

Здесь использовано два вида колонок DataGridTextColumn и DataGridTemplateColumn. Про их виды можно почитать везде. Главное здесь понимать, что с помощью DataGridTemplateColumn можно задать любой шаблон. То есть, в ячейки этой колонки можно будет помещать любые элементы управления (кнопки, календари и т.д.). К примеру в третьей колонке это TextBox:

ВАЖНО: Не забывайте прописывать Header, потому что автозаполнение у нас отключено. А также для DataGridTemplateColumn необходимо прописать SortMemberPath, чтобы он знал по какому полю сортировать данные.

Перейдем к Binding. Это непосредственно сама привязка к данным. Ее мы указываем с помощью Binding Path=PhoneNumber. Здесь главное учесть то, что это именно название метода класса, который возвращает значение поля (не phoneNumber, а PhoneNumber, см. описание класса).
И еще один момент. Есть возможность ввести разные типы шаблонов (DataTemplate) для ячеек в обычном состоянии (CellTemplate) и в состоянии редактирования (CellEditingTemplate). В четвертой колонке ячейки в обычном состоянии это TextBox, а в состоянии редактирования DatePicker:

Также стоит отметить, что при работе с датами у поля Text есть свойство StringFormat, которое можно форматировать. Важно, что для корректного отображения месяца «ММ» должны быть большими.

Теперь, чтобы привязать конкретные данные к таблице вернемся к коду на C#.
После заполнения массива элементами, его надо указать в качестве источника данных:

Видно что в теге TextBox я назначил обработчик для события изменения текста. Теперь осталось только прописать этот обработчик в коде:

Проверку на цифры можно сделать и через регулярные выражения.

Источник

пошаговое руководство. отображение данных из SQL Server базы данных в элементе управления DataGrid

в этом пошаговом руководстве вы получаете данные из базы данных SQL Server и отображает их в DataGrid элементе управления. Entity Framework ADO.NET используется для создания классов сущностей, представляющих данные, и использования LINQ для написания запроса, который извлекает указанные данные из класса сущностей.

Предварительные требования

Для выполнения этого пошагового руководства требуются следующие компоненты:

доступ к выполняющемуся экземпляру SQL Server или SQL Server Express, к которому присоединен образец базы данных AdventureWorks. Базу данных AdventureWorks можно загрузить из GitHub.

Создание классов сущностей

В обозреватель решений щелкните правой кнопкой мыши проект, наведите указатель на пункт Добавить и выберите пункт создать элемент.

Откроется диалоговое окно Добавить новый элемент.

в области установленные шаблоны выберите данные и в списке шаблонов выберите ADO.NET EDM.

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

Присвойте файлу имя AdventureWorksModel.edmx и нажмите кнопку Добавить.

Появится мастер модели EDM.

На экране Выбор подключения к данным укажите подключение к базе данных AdventureWorksLT2008. Дополнительные сведения см. в разделе диалоговое окно «Выбор подключения к данным».

Убедитесь, что имя имеет значение, AdventureWorksLT2008Entities а флажок сохранить параметры подключения сущности в App.Config как установлен, а затем нажмите кнопку Далее.

Можно создавать классы сущностей для всех таблиц. Однако в этом примере данные извлекаются только из этих двух таблиц.

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

Нажмите кнопку Готово.

Сущности Product и ProductCategory отображаются в Entity Designer.

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

Получение и представление данных

Откройте файл MainWindow. XAML.

Установите свойство в значение Width Window 450.

Как сделать таблицу в wpf. Смотреть фото Как сделать таблицу в wpf. Смотреть картинку Как сделать таблицу в wpf. Картинка про Как сделать таблицу в wpf. Фото Как сделать таблицу в wpf

С помощью окно свойств или редактора XAML Создайте обработчик событий для Window именованного Window_Loaded Loaded события. Дополнительные сведения см. в разделе инструкции. Создание простого обработчика событий.

Ниже показан XAML для MainWindow. XAML.

Добавьте следующий код, чтобы получить только определенные значения из соединяемых таблиц и задать ItemsSource для свойства объекта DataGrid результаты запроса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *