2011-01-15 7 views
17

itemtemplate이 스타일을 사용하는 목록 상자가 있습니다. 스타일은 속성에 따라 축소되도록 테두리의 가시성을 설정하는 데이터 트리거가있는 테두리를 지정합니다. 이것은 목록에서 축소 된 각 항목에 대해 매우 좁은 줄을 여전히 볼 수 있다는 점을 제외하고는 정상적으로 작동합니다. 나는 누군가가 눈에 보이지 않는 흔적이 없도록 가시성을 설정하는 방법을 도울 수 있기를 바라고 있었는데, 이는 연속 된 항목들이 붕괴되었을 때 아주 명백하게 드러났습니다.WPF - 목록 상자 항목 숨기기

datatemplate은 내부에 dockpanel이있는 바깥 쪽 경계를 지정합니다.이 경우 스택 패널이 여기에 고정됩니다.

도움을 주시면 감사하겠습니다.

음이 단순화 된 템플릿입니다 : 당신은 성공적으로 항목을 숨기고

<DataTemplate x:Key="myTemplate"> 
    <Border BorderThickness="0"> 
     <Border.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=IsActive}" Value="False"> 
         <Setter Property="Border.Visibility" Value="Collapsed" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Border.Style> 
     <DockPanel LastChildFill="True" HorizontalAlignment="Stretch"> 
      <StackPanel DockPanel.Dock="Right" HorizontalAlignment="Right" > 
       <TextBlock Text="{Binding Path=SeqNo, Converter={StaticResource SeqToTextConv}}"/> 
       <Label Content="..." /> 
      </StackPanel> 
     </DockPanel> 
    </Border> 
</DataTemplate> 
+0

문제를 설명하는 예제 XAML을 게시 할 수 있습니까? – BrokenGlass

+0

원래 게시물에 추가 하시겠습니까? – c95mbq

답변

34

그러나 목록 상자가 ListBoxItem의 내에서 각 항목을 래핑이는 당신의 품목에 대한 선택으로 개념을 추가합니다. 항목이 숨겨져있는 경우에도 ListBoxItem이 계속 표시되는 것 같습니다. ItemContainerStyle을 사용하여 ListBoxItem을 숨길 수 있습니다 ...

<ListBox> 
    <ListBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
     <DataTrigger Binding="{Binding IsActive}" Value="False"> 
      <Setter Property="Visibility" Value="Collapsed"/> 
     </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

감사합니다. 콜린 감사합니다. – c95mbq