如何将扩展器应用于ListViewItem?

时间:2017-12-04 16:24:42

标签: wpf

说我有扩展器:(来自the article

<ControlTemplate x:Key="SimpleExpanderTemp" TargetType="{x:Type Expander}">
<DockPanel>
    <ToggleButton x:Name="ExpanderButton"

                  DockPanel.Dock="Top"

                  Template="{StaticResource SimpleExpanderButtonTemp}"

                  Content="{TemplateBinding Header}"

                  IsChecked="{Binding Path=IsExpanded, 
                  RelativeSource={RelativeSource TemplatedParent}}"

                  OverridesDefaultStyle="True"

                  Padding="1.5,0">
    </ToggleButton>
    <ContentPresenter x:Name="ExpanderContent"

                      Visibility="Collapsed"

                      DockPanel.Dock="Bottom"/>
</DockPanel>
<ControlTemplate.Triggers>
    <Trigger Property="IsExpanded" Value="True">
        <Setter TargetName="ExpanderContent" 

          Property="Visibility" Value="Visible"/>
    </Trigger>
</ControlTemplate.Triggers>

现在我想在ListViewItems上使用扩展器。 列表视图没有itemsSource。我在这里使用硬拷贝。

<ListView VerticalAlignment="Top>
    <Grid>
        <Grid.RowDefinitions>
             <RowDefinition />
             <RowDefinition />
        </Grid.RowDefinitions>
        <Expander Template="{StaticResource SimpleExpanderButtonTemp}" Grid.Row="0" />
        <ListViewItem Grid.Row="1>
            <StackPanel>
                 <Button Height="50"> Test</Botton>
            </StackPanel>
        </ListViewItem>
   </ListView>

我的问题是如何将扩展器应用于列表视图项?我认为在模板中ContentPresenter是一个placehole,然后我会用它替换ListViewItem?

修改

我想要像

这样的东西

demo

第1行是一个togglebutton。 第2行是列表视图项。 当然,我有很多列表视图项。每个人都应该有它的扩展器。在图像中我只列出一个。

1 个答案:

答案 0 :(得分:0)

您可以将Content的{​​{1}}设置为您想要的任何内容,例如Expander

ListViewItem

它是展开和折叠的<Expander Template="{StaticResource SimpleExpanderButtonTemp}" Grid.Row="0"> <ListViewItem Grid.Row="1"> <StackPanel> <Button Height="50">Test</Button> </StackPanel> </ListViewItem> </Expander>

您不需要在Content内明确创建ListViewItems,但您可能只想将ListView添加到StackPanel

Expander