2008-10-21 1 views
3

런타임시 일부 조건에 따라 ListView에 대해 GroupStyles 사이에서 전환하려면 어떻게해야합니까? 예를 들어 GroupStyle 헤더 이름이 null 인 항목에 Default를 사용해야하고 null이 아닌 경우 사용자 정의 GroupStyle 테마를 사용합니까? GroupStyleSelector을 시도했는데 작동하지 않습니다. 다중 레벨 그룹화에서 작동하고 제 경우에는 레벨 그룹화가 하나만 있기 때문입니다.다른 범주 항목에 대해 ListView의 GroupStyle을 변경 (사용/사용 안 함)

그렇다면 어떻게됩니까?

사용자 정의 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> 

고마워요.

감사합니다. 블라드.

답변

4

오케이,

해결책을 찾았습니다. 기본적으로 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> 
+0

DataTrigger를 사용하지 않고 동일한 방법 – Tilak