Перейти к содержимому

Как изменить цвет listview wpf

  • автор:

Как изменить цвет listview wpf

Этот элемент управления отображает информацию на множестве строк и столбцов. Он унаследован от класса ListBox , поэтому может вести себя простой список:

 LG Nexus 5X Huawei Nexus 6P iPhone 6S iPhone 6S Plus Аsus Zenphone 2 Microsoft Lumia 950  

Но чтобы создать более сложные по структуре данные используется свойство View . Это свойство принимает в качестве значения объект GridView, который управляет отображением данных. GridView определяет коллекцию определений столбцов — GridViewColumn , которое с помощью свойства Header определяет название столбца, а с помощью свойства DisplayMemberBinding можно определить привязку столбца к определенному свойству добавляемого в ListView объекта.

Компания

Допустим у нас в проекте определен класс Phone:

public class Phone < public string Title < get; set; >public string Company < get; set; >public int Price < get; set; >>

Создадим в xaml-коде коллекцию объектов Phone (в принципе это можно было бы сделать и в файле кода) и объявим привязку столбцов ListView к свойствам объектов Phone:

    Модель Компания Цена             

Стили и шаблоны элемента ListView

В этом разделе описываются стили и шаблоны для элемента управления ListView. Можно изменять свойства ControlTemplate, заданные по умолчанию, чтобы придать элементу управления уникальный внешний вид. Дополнительные сведения см. в разделе Создание шаблона для элемента управления.

Компоненты элемента управления ListView

У элемента управления ListView нет именованных компонентов.

При создании шаблона ControlTemplate для элемента управления ListView в шаблоне может находиться объект ItemsPresenter внутри объекта ScrollViewer. (ItemsPresenter отображает все элементы объекта ListView, а ScrollViewer обеспечивает прокрутку в пределах элемента управления.) Если ItemsPresenter не является непосредственным дочерним элементом ScrollViewer, то для ItemsPresenter необходимо задать название, ItemsPresenter .

Состояния элемента управления ListView

В следующей таблице представлены визуальные состояния для элемента управления ListView.

Имя VisualState Имя VisualStateGroup Description
Действительно ValidationStates Элемент управления использует класс Validation, и присоединенное свойство Validation.HasError имеет значение false .
InvalidFocused ValidationStates Присоединенное свойство Validation.HasError имеет значение true , если у элемента управления есть фокус.
InvalidUnfocused ValidationStates Присоединенное свойство Validation.HasError имеет значение true , если у элемента управления нет фокуса.

Компоненты элемента управления ListViewItem

У элемента управления ListViewItem нет именованных компонентов.

Состояния элемента управления ListViewItem

В следующей таблице представлены состояния для элемента управления ListViewItem.

Имя VisualState Имя VisualStateGroup Description
Норм. CommonStates Состояние по умолчанию.
Выключено CommonStates Элемент управления отключен.
MouseOver CommonStates Указатель мыши на элементе управления ComboBox.
Режим фокусировки FocusStates Элемент управления имеет фокус.
Без фокуса ввода FocusStates Элемент управления не имеет фокуса.
Выбрано SelectionStates Элемент выбран.
не выбрано SelectionStates Элемент не выбран.
SelectedUnfocused SelectionStates Элемент выбран, но не имеет фокуса.
Действительно ValidationStates Элемент управления использует класс Validation, и присоединенное свойство Validation.HasError имеет значение false .
InvalidFocused ValidationStates Присоединенное свойство Validation.HasError имеет значение true , если у элемента управления есть фокус.
InvalidUnfocused ValidationStates Присоединенное свойство Validation.HasError имеет значение true , если у элемента управления нет фокуса.

Пример шаблона элемента управления для ListView

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

     

В примере шаблона ControlTemplate используется один или несколько из следующих ресурсов.

 #FFE8EDF9 #FFC5CBF9 #FF7381F9 #FFE8EDF9 #FFC5CBF9 #FF888888 #FFC5CBF9 #FFDDDDDD White #FF7381F9 #FF211AA9 #FF3843C4 #FF211AA9 #FF444444 sc#1, 0.004391443, 0.002428215, 0.242281124 #FFCCCCCC #FF888888 #FF444444 #FF888888 #FF444444 #FFAAAAAA #FF888888 Black #FFC5CBF9 Black #FFC5CBF9 #FF3843C4 " Offset="0" /> " Offset="0.5" /> " Offset="1" />          

См. также

  • Style
  • ControlTemplate
  • Стили и шаблоны элемента управления
  • Настройка элементов управления
  • Стилизация и использование шаблонов
  • Создание шаблона для элемента управления

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

как в ListView поменять цвет (wpf)

Задача: необходимо использовать для каждой четной и нечетной строки свою цветовую схему (максимум 2 цвета для любого числа записей). Спасибо!

Отслеживать
задан 22 апр 2016 в 8:18
73 1 1 серебряный знак 9 9 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Очень просто. Используйте AlternationIndex и триггеры:

alternation count

Отслеживать
ответ дан 22 апр 2016 в 15:27
207k 28 28 золотых знаков 293 293 серебряных знака 526 526 бронзовых знаков

  • c#
  • wpf
  • listview
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Шаблоны ячеек ListView

Свойство GridViewColumn.DisplayMemberBinding не является единственным способом для отображения данных в ячейке. Вместо него можно использовать свойство CellTemplate, которое принимает шаблон данных. Этот шаблон данных отличается тем, что он применяется лишь к одному конкретному столбцу. При желании разработчика у каждого столбца может быть собственный шаблон данных.

Шаблоны ячеек (CellTemplate) являются ключевым фрагментом головоломки при настройке GridView. К числу наиболее важных из предоставляемых ими возможностей относится перенос текста. Обычно текст в столбце переносится в однострочном элементе TextBlock. Однако эту деталь можно легко изменить, создав собственный шаблон данных со своей схемой деления:

      

Обратите внимание, что для того, чтобы перенос дал результат, ширину столбца необходимо ограничить с помощью свойства Width. Тогда в случае изменения пользователем размера столбца текст будет переноситься заново соответствующим образом. Ограничивать ширину элемента TextBlock не нужно, поскольку тогда текст будет иметь одинаковый размер, каким бы широкими или узким его не делал пользователь.

Единственным ограничением в этом примере является то, что шаблон данных должен явным образом привязываться к отображаемому свойству. Поэтому создать шаблон, обеспечивающий перенос, и использовать его повторно для каждого фрагмента содержимого нельзя. Вместо этого понадобится создать отдельный шаблон для каждого поля. В данном примере это не проблема, но в случае создания более сложного шаблона, который можно было бы применять и к другим спискам (например, шаблона, преобразующего данные в изображение и отображающего его в элементе Image, или шаблона, использующего элемент управления TextBox для обеспечения возможности редактирования), это может оказаться утомительным.

Простого способа для повторного использования любого шаблона на множестве столбцов не существует: вместо этого придется вырезать и вставлять шаблон, а затем изменять привязку.

Было бы совсем неплохо создать шаблон данных, включающий свойство DisplayMemberBinding. Тогда DisplayMemberBinding можно было бы применять для извлечения необходимого свойства, a CellTemplate — для форматирования находящегося в нем содержимого в подходящее визуальное представление. К сожалению, такой вариант просто не возможен. В случае, когда устанавливаются оба свойства DisplayMember и CellTemplate, класс GridViewColumn использует для установки содержимого ячейки свойство DisplayMember, а шаблон просто игнорирует.

Возможности шаблонов данных не ограничиваются только возможностью настройки свойств элемента TextBlock. Шаблоны данных можно также использовать и для предоставления совершенно других элементов.

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

Столбцы, использующие шаблоны

При создании шаблона данных можно определить его как внутристрочный (что и было сделано в двух предыдущих примерах) или сослаться на ресурс, определенный в другом месте. Поскольку шаблоны столбцов нельзя использовать повторно для различных полей, обычно наиболее правильным подходом является все-таки первый вариант.

Шаблоны можно варьировать, чтобы разные элементы данных получали разные шаблоны. Для этого необходимо создать селектор шаблонов, выбирающий подходящий шаблон на основании свойств находящегося в конкретной позиции объекта данных. Если такая функциональная возможность необходима, создайте селектор и примените его для установки свойства GridViewColumn.CellTemplateSelector.

Настройка заголовков столбцов

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

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

При желании оставить стандартные прямоугольники с серой заливкой, но заполнить их своим собственным содержимым, можно установить свойство GridViewColumn.Header. В предыдущих примерах свойство Header использовалось с обычным текстом, но вместо него можно предоставить и, например, элемент StackPanel, упаковывающий элементы TextBlock и Image, и создать необычный заголовок с текстом и рисунком внутри.

Если требуется заполнить заголовки столбцов собственным содержимым, но не указывать это содержимое отдельно для каждого столбца, можно воспользоваться свойством GridViewColumn.HeaderTemplate для определения подходящего шаблона данных. Этот шаблон данных привязывается к любому объекту, который был указан в свойстве GridViewColumn.Header, и представляет его соответствующим образом.

Чтобы изменить форматирование конкретного заголовка столбца, необходимо с помощью свойства GridViewColumn.HeaderContainerStyle предоставить нужный стиль. Для переформатирования всех заголовков столбцов одинаковым образом следует использовать свойство GridView.ColumnHeaderContainerStyle.

Но если необходимо полностью изменить внешний вид заголовка (например, заменить прямоугольник с серой заливкой на границу со скругленными углами и фоном голубого цвета), можно предоставить для него совершенно новый шаблон элемента управления. Чтобы сделать это для одного конкретного столбца, следует воспользоваться свойством GridViewColumn.HeaderTemplate, а для всех столбцов сразу — свойством GridView.ColumnHeaderTemplate. Вдобавок также можно применить и селектор шаблонов для выбора правильного шаблона для данного заголовка, установив свойство GridViewColumn.HeaderTemplateSelector или GridView.ColumnHeaderTemplateSelector.

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

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