Вниз  C# / .NET
- 26.07.2022 / 15:51
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Гугл поломался, хз где почитать

Есть checkbox, есть listview. В зависимости от того, включен ли флажок или нет, а также от свойства listviewitem нужно менять background элементов списка. Грубо говоря, включать и выключать подсветку у определенных элементов. Как это провернуть можно?
__________________
 わからない!!
- 26.07.2022 / 17:22
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Ты писал выше WPF, как там хз, но помню на WinForms параметры почти идентичны лазаровских, а там как то так:

В листвиеве должно быть событие типа OnSelectItem или OnSelectionChanged, и там работать, аля:

  1. listview_onSelectItem(object sender) {
  2.     item = ListViewItem(sender);
  3.  
  4.     if checkbox.Checked && (item.title == "hello")
  5.        item.background = red;
  6. }

Или ты конкретный код хочешь? :gg:
- 27.07.2022 / 06:59
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Helltar, не, код есть, только не работает :gg:
В wpf есть привязки (bindings), плюс у меня паттерн mvvm, доступа к элементам окна напрямую нет. События не используются, вместо этого у меня настроен datatrigger. К примеру, у какого-то элемента списка есть bool свойство. Если оно равно true, то можно установить этому элементу другой стиль. У меня это свойство называется IsPF
  1. <CheckBox IsChecked="{Binding UseHighlight}"/>
  2. <ListView ItemsSource="{Binding ProductGroups}" SelectedItem="{Binding SelectedGroup, Mode=TwoWay}">
  3.   <ListView.ItemContainerStyle>
  4.     <Style TargetType="ListViewItem">
  5.       <Style.Triggers>
  6.         <DataTrigger Binding="{Binding IsPF}" Value="True">
  7.           <Setter Property="Background" Value="GreenYellow"/>
  8.         </DataTrigger>
  9.       </Style.Triggers>
  10.     </Style>
  11.   </ListView.ItemContainerStyle>
  12.   <ListView.View>
  13.     <GridView>
  14.       <!-- столбцы -->
  15.       <GridViewColumn Header="ПФ" DisplayMemberBinding="{Binding IsPF, Converter={helpers:BoolToIconConverter}}"/>
  16.       <!-- столбцы -->
  17.     </GridView>
  18.   </ListView.View>
  19. </ListView>
В доках просто не могу найти, как использовать значение UseHighlight, чтобы включать или выключать этот триггер.
__________________
 わからない!!

Изменено Витаминыч (27.07 / 07:14) (всего 2 раза)
- 27.07.2022 / 13:34
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Витаминыч, ну триггеры это те же события только называются триггерами :gg:

А зачем тебе UseHighlight если триггер на Background стоит от значения IsPF?

В интернетах пишут как то так если сразу на чекбокс триггерить:

  1. ...
  2. <Style TargetType="ListViewItem">
  3.       <Style.Triggers>
  4.         <DataTrigger Binding="{Binding ElementName=checkBox1, Path=IsChecked}" Value="True">
  5.           <Setter Property="Background" Value="GreenYellow"/>
  6.         </DataTrigger>
  7.       </Style.Triggers>
  8. </Style>
  9. ...


Изменено Helltar (27.07 / 13:36) (всего 1 раз)
- 27.07.2022 / 14:21
Витаминыч
  Супермодератор

Витаминыч 
Сейчас: Offline
Helltar, включать и выключать подсветку же :gg:

Так то оно да, отдельно на чб работает, но тогда как привязаться еще и к isPf? Думаю, мб как-то через мультитриггер или мультибиндинг можно... 🧐

Даже если убрать триггер от ispf, а сразу задать стиль элемента, то как тогда реагировать на чб и выкл/вкл стиль? 🤔
__________________
 わからない!!
- 27.07.2022 / 16:15
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Так то оно да, отдельно на чб работает, но тогда как привязаться еще и к isPf? Думаю, мб как-то через мультитриггер или мультибиндинг можно... Думаю да, https://metanit.com/sharp/wpf/10.2.php
Наверх  Всего сообщений: 296
Фильтровать сообщения
Поиск по теме
Файлы топика (7)