изглед на списък. Внедряване на вашия собствен избор

Тази статия ще разгледа как да разширите функционалността на ListView чрез прецизиране на контейнера за елементите от списъка.

Целта или това, което искаме да постигнем

Тъй като е най-добре да илюстрираме нещо в конкретни ситуации, ние си поставихме следната цел: да позволим текущия елемент от списъка да бъде избран чрез натискане на интервала. Този избор: - не трябва да зависи от текущото поведение на ListView (свойство SelectionMode); - трябва да е различен от "нормалния" избор на елемента(ите) от списъка; - не трябва да се нулира, когато ListView загуби фокус; —не трябва да се променя при работа със стандартни свойства, които отговарят за избраните елементи от списъка (пример: SelectedItem, SelectedIndex). И така, да започваме. За да решим задачата, ще изпълним следните стъпки: - създадем собствен контейнер за елементите на списъка, който ще разширим с новото свойство IsSpaceSelect. Това свойство ще определи дали елементът от списъка е избран по нашия начин или не; - нека създадем собствена контрола ListView, която работи с нашия контейнер по подразбиране; —промяна на визуалния дизайн на избрания елемент.

1. Създайте нов контейнер за елементи от списък.

И така, имаме нашия контейнер за елементи със свойството IsSpaceSelect.

Преминаваме към стъпка 2 - направете ListView да работи с нашия контейнер

/// Вярно, ако интервалът е разрешен за елементи

public bool IsSpaceSelectedMode

/// Регистрирайте свойството "Разрешено е да се избират елементи с интервал"

публичен статичен само за четене DependencyProperty IsSpaceSelectedModeProperty =

DependencyProperty.Register( "IsSpaceSelectedMode" , typeof (Boolean), typeof (SpaceListView), new PropertyMetadata(false ));

Свойство на задействане ="IsSpaceSelectedMode" Стойност ="true" >

Собственост на сетер="ItemContainerStyle" >

Свойство на задействане ="IsSpaceSelect" Стойност ="true" >

Setter Property ="Foreground" Value ="DarkBlue" />

Свойство на Setter ="Background" >

LinearGradientBrush EndPoint ="0.5,1" StartPoint ="0.5,0" >

GradientStop Color="#FFFFC704" Offset="0.986" />

GradientStop Color="#FFF4E057" Offset="0.5" />

GradientStop Color="#FFF4E057" Offset="0.51" />