2017-01-22 14 views
1

스택 패널이 포함 된 목록보기가 있습니다. 데이터 격자가 들어 있습니다.ListView에서 ListItem을 축소했습니다.

사용자가 확인란을 클릭하면됩니다. 과 일부 데이터가 접히게됩니다.

<Style x:Key="ShowHideStyle" TargetType="StackPanel" > 
    <Style.Setters> 
     <Setter Property="Visibility" Value="Collapsed" /> 
    </Style.Setters> 
    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Value="True"> 
        <Condition.Binding> 
         <MultiBinding Converter="{StaticResource V_converter }"> 
          <Binding Path="Type"></Binding> 
          <Binding Path="NodeID"></Binding> 
          <Binding Path="TLV"></Binding> 
         </MultiBinding> 
        </Condition.Binding> 
       </Condition> 
      </MultiDataTrigger.Conditions> 

      <MultiDataTrigger.Setters> 
       <Setter Property="Visibility" Value="Visible" /> 
      </MultiDataTrigger.Setters> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style> 

<ListView x:Name="LV" ItemsSource= "{Binding Lggv}" SelectionChanged="dataGridData_SelectionChanged" ItemContainerStyle="{StaticResource ListViewItemStyle}"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:Name="DT" > 
      <StackPanel x:Name="LVSP" DataContextChanged="LVSP_DataContextChanged" SourceUpdated="LVSP_SourceUpdated" Style="{StaticResource ShowHideStyle}"> 
       <Border BorderThickness="1" BorderBrush="Black" > 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="150"></ColumnDefinition> 
          <ColumnDefinition Width="55"></ColumnDefinition> 
          <ColumnDefinition Width="1*"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <TextBlock x:Name="tbHeader" Text="{Binding Info }" AllowDrop="True" FontWeight="Bold" Grid.Column="2" Visibility="{Binding Visibility_Header}" > 

          <TextBlock.Style> 
           <Style TargetType="TextBlock"> 
            <Setter Property="Background"> 
             <Setter.Value> 
              <!-- this is the default background--> 
              <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
               <GradientStop Color="#FFCEE6C6" Offset="0.008"/> 
               <GradientStop Color="#FF9ECF8C" Offset="0.987"/> 
              </LinearGradientBrush> 
             </Setter.Value> 
            </Setter> 
           </Style> 
          </TextBlock.Style> 
         </TextBlock> 
        </Grid> 
       </Border> 
       <Grid x:Name="GridData"> 
        <Grid.Background> 
         <MultiBinding Converter="{StaticResource converter }"> 
          <Binding Path="Type"></Binding> 
          <Binding Path="NodeID"></Binding> 
          <Binding Path="TLV"></Binding> 
         </MultiBinding> 
        </Grid.Background> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="150"></ColumnDefinition> 
         <ColumnDefinition Width="55"></ColumnDefinition> 
         <ColumnDefinition Width="1*"></ColumnDefinition> 
        </Grid.ColumnDefinitions> 
        <Border Grid.Column="0" BorderThickness="1" BorderBrush="Black"> 
         <TextBlock Text="{Binding DateTime}" ></TextBlock> 
        </Border> 
        <Border Grid.Column="1" BorderThickness="1" BorderBrush="Black"> 
         <TextBlock Text="{Binding ComPort}"></TextBlock> 
        </Border> 
        <Border Grid.Column="2" BorderThickness="1" BorderBrush="Black"> 
         <TextBlock Text="{Binding Data}" ></TextBlock> 
        </Border> 
       </Grid> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

헤더를 항상 표시 하시겠습니까? – mm8

+0

격자보기의 머리글 또는 목록보기의 머리글 –

+0

StackPanel에서 "머리글"테두리를 참조하고있었습니다. – mm8

답변

1

당신은 TARGETTYPE ListViewItem 대신에 당신을 목표로하기위한 ItemContainerStyle을 설정해야 항목 콘텐츠 (StackPanel). 참고 자료 섹션에서

,

<Style x:Key="ShowHideStyle" TargetType="ListViewItem"> 
    ... 
</Style> 

그런 다음이

<ListView ItemContainerStyle="{StaticResource ShowHideStyle}" .../> 

당연히를 사용하여 스타일을 정의, 당신의 계산기/트리거 일이 실제로 작동하고 있음을 가정하고 당신은 제대로 숨어의 문제가 전체 목록 항목

0

에 StackPanel에 넣어 :

내 XAML 코드의 일부를 attching :

이 코드 exmpale와 appericate 도움이 될 것입니다 모든 목록보기 항목에 대한 (데이터의 나머지는 올라갈 것입니다) 확장기를 사용하고 후자에게 스타일을 적용합니다. 대신 축소/가시로 Visbility 속성을 설정

<ListView x:Name="LV" ItemsSource= "{Binding Lggv}" SelectionChanged="dataGridData_SelectionChanged" 
        ItemContainerStyle="{StaticResource ListViewItemStyle}"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:Name="DT" > 
      <Expander Header="..." Style="{StaticResource ShowHideStyle}"> 
       <StackPanel x:Name="LVSP" DataContextChanged="LVSP_DataContextChanged" SourceUpdated="LVSP_SourceUpdated"> 
        <Border...></Border...> 
        <Grid...></Grid...> 
       </StackPanel> 
      </Expander> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

당신에게 확장기의으로 IsExpanded 속성을 설정 참/거짓 :

<Style x:Key="ShowHideStyle" TargetType="Expander" > 
    <Style.Setters> 
     <Setter Property="IsExpanded" Value="False" /> 
    </Style.Setters> 
    <Style.Triggers> 
     <MultiDataTrigger> 
      <MultiDataTrigger.Conditions> 
       <Condition Value="True"> 
        <Condition.Binding> 
         <MultiBinding Converter="{StaticResource V_converter }"> 
          <Binding Path="Type"></Binding> 
          <Binding Path="NodeID"></Binding> 
          <Binding Path="TLV"></Binding> 
         </MultiBinding> 
        </Condition.Binding> 
       </Condition> 
      </MultiDataTrigger.Conditions> 
      <MultiDataTrigger.Setters> 
       <Setter Property="IsExpanded" Value="True" /> 
      </MultiDataTrigger.Setters> 
     </MultiDataTrigger> 
    </Style.Triggers> 
</Style> 
+0

아니요 이거 아니에요 표시하고 싶습니다 표시되고 올라갑니다! –