Как изменить внешний вид 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
Сайт, похоже, проглотил ваш кодовый блок. Это ошибка, над которой сейчас работают.
Чтобы обойти эту проблему, пожалуйста, Закодируйте свой код перед публикацией - <
⇒ <
, >
⇒ >
, и &
⇒ &
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 свойство (или то, что вы выберете для его имени) в базовом классе