Ahmad_kelany Ответов: 0

Как изменить внешний вид ListBox datatemplate с помощью itemcontainerstyle ?


Всем привет
У меня есть DataTemplate :

<DataTemplate x:Key="autoCompleteTemplate">
          <Grid TextElement.FontSize="18">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*" />
                    <ColumnDefinition Width="84" />
                </Grid.ColumnDefinitions>
                <Border Background="#FFFFFBDF">
                    <TextBlock Text="{Binding ItemName}" />
                </Border>
                <Border Grid.Column="1" Background="#FFFFFBDF">
                    <TextBlock Text="{Binding Balance,StringFormat=0.00}" />
                </Border>
            </Grid>
</DataTemplate>

мне нужно изменить фон 2 границ внутри шаблона, когда выбран элемент ListBoxItem

Что я уже пробовал:

Я попробовал использовать ItemContainerStyle, установив свойства выбранного состояния с помощью blend
до сих пор я мог бы изменить цвет фона ListBoxItem в целом, когда он выбран, но я хочу изменить только цвет внутренних границ элемента управления содержимым, к которому я не могу получить доступ из ItemContainerStyle
Я также попытался сделать отдельную табличку данных для выбранного внешнего вида
и попытался установить ContentControl в выбранном состоянии, но это не имеет никакого значения

существует также утомительное решение использования DataTriggers
в основном для добавления свойства IsSelected в мой класс Item
и реализовать в нем INotifyPropertyChanged
и установите это свойство в True всякий раз, когда элемент выбран
и установите dataTemplate в триггере соответствующим образом

но разве нет другого решения, использующего XAML и Blend, без необходимости менять мой класс ?

Richard Deeming

Сайт, похоже, проглотил ваш кодовый блок. Это ошибка, над которой сейчас работают.

Чтобы обойти эту проблему, пожалуйста, Закодируйте свой код перед публикацией - <&lt;, >&gt;, и &&amp;

Ahmad_kelany

большое спасибо , я продолжал обновлять вопрос, не зная, что не так :)

[no name]

Почему вы не можете использовать триггер DataTemplate?

Ahmad_kelany

Я могу
я надеялся найти более простое решение, используя только XAML и blend без необходимости менять класс
потому что не всегда я буду в ситуации с доступом или привилегией изменять базовый класс

[no name]

В этом нет никакого смысла. Триггер DataTemplate - это XAML, поэтому я не знаю, что вы имеете в виду, говоря, что вам придется изменить класс, потому что вы этого не делаете.

Ahmad_kelany

требуется DataTrigger а не простой триггер в DataTemplate
установка триггерного свойства=" IsSelected "Value= "True" в DataTemplate ничего не делает, потому что DataTemplate не имеет свойства IsSelected
чтобы сделать эту работу, нужно использовать DataTrigger, который отслеживает IsSelected свойство (или то, что вы выберете для его имени) в базовом классе

0 Ответов