Изменение (Включение / выключение) GroupStyle в ListView для элементов разных категорий

StackOverflow https://stackoverflow.com/questions/222729

  •  03-07-2019
  •  | 
  •  

Вопрос

Как я могу переключаться между GroupStyles для ListView на основе каких-то условий во время выполнения?Например, мне нужно использовать Default для элементов, которые имеют GroupStyle Имя заголовка null, и если оно не равно null, то используйте пользовательский GroupStyle тема?Я пытался GroupStyleSelector, и это не работает, потому что это работает для многоуровневой группировки, а в моем случае у меня есть только одноуровневая группировка.

Если да, то каким образом?

Обычай GroupStyle:

    <Style x:Key="grouping"
           TargetType="{x:Type GroupStyle}">
        <Setter Property="ContainerStyle">
            <Setter.Value>
                <Style TargetType="{x:Type GroupItem}">
                    <Setter Property="Margin"
                            Value="0,0,0,5" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type GroupItem}">
                                <Expander IsExpanded="False"
                                          BorderBrush="#FFA4B97F"
                                          BorderThickness="0,0,0,1">
                                    <Expander.Header>
                                        <DockPanel>
                                            <TextBlock FontWeight="Bold"
                                                       Text="{Binding Name}"
                                                       Margin="0"
                                                       Width="250" />
                                            <TextBlock FontWeight="Bold"
                                                       Text="{Binding Path=Items[0].StartTime, StringFormat=T}" />
                                        </DockPanel>
                                    </Expander.Header>
                                    <Expander.Content>
                                        <ItemsPresenter />
                                    </Expander.Content>
                                </Expander>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>                    
    </Style>

Большое спасибо.

С уважением, Влад.

Это было полезно?

Решение

Ладно,

Я нашел решение для этого.По сути, мне нужно было создать DataTrigger и проверить наличие в нем категории, и если она совпадает, использовать другой GroupStyle.Вот такой пример:

  <ControlTemplate TargetType="{x:Type GroupItem}"
                   x:Key="defaultGroup">
       <ItemsPresenter />
  </ControlTemplate>

  <ListView.GroupStyle>
   <GroupStyle >                            
    <GroupStyle.ContainerStyle>
     <Style TargetType="{x:Type GroupItem}">
      <Setter Property="Margin"
        Value="0,0,0,5" />
      <Setter Property="Template">
       <Setter.Value>
        <ControlTemplate TargetType="{x:Type GroupItem}">
         <Expander IsExpanded="False"
             BorderBrush="Black"
             BorderThickness="3"
             Padding="5,1,1,5">
          <Expander.Header>
           <DockPanel>
            <TextBlock FontWeight="Bold"
                 Margin="0"
                 Width="250">
             <TextBlock.Text>
              <MultiBinding StringFormat="{}{0} ({1} jobs)">
               <Binding Path="Name" />
               <Binding Path="ItemCount" />
              </MultiBinding>
             </TextBlock.Text>
            </TextBlock>
            <TextBlock FontWeight="Bold"
                 Text="{Binding Path=Items[0].Category, StringFormat=T}" />
           </DockPanel>
          </Expander.Header>
          <Expander.Content>
           <ItemsPresenter />
          </Expander.Content>
         </Expander>
        </ControlTemplate>
       </Setter.Value>
      </Setter>
      <Style.Triggers>
       <DataTrigger Binding="{Binding Items[0].Category}"
           Value="ABC">
        <Setter Property="Template"
          Value="{StaticResource defaultGroup}" />
       </DataTrigger>
      </Style.Triggers>
     </Style>
    </GroupStyle.ContainerStyle>
   </GroupStyle>
  </ListView.GroupStyle>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top