2017-01-22 23 views
1

У меня есть вид списка, который содержит панель стека. которые содержат сетку данных.свернул ListItem из спискаView

Я хочу, чтобы пользователь нажал на флажок. , и некоторые данные рухнут. (И остальные данные будут идти вверх) для любого представления списка Пункта

будет appericate некоторой помощи с кодом exmpale:

attching некоторые из моего XAML кода:

<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

Вы должны установить ItemContainerStyle для TargetType ListViewItem вместо настройки таргетинга на Содержимое предмета (StackPanel).

В разделе Ресурсы, определить свой стиль

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

Затем используйте его

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

Ofcourse, я полагаю, что ваш конвертер/триггер, что на самом деле работает, и вы просто проблему должным образом скрывается запись всего списка.

0

Поместите StackPanel в расширитель и примените стиль к последнему.

<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> 

Вместо установки свойства Visbility в Collapsed/Visible устанавливается свойство 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

no this not I Meant Я хочу, чтобы все было видно и будет отображаться! –