wpf - 从嵌套列表视图中选择项目也选择父列表视图

时间:2017-01-23 06:49:56

标签: wpf

我有一个包含文本块和另一个列表的列表视图。 我希望当用户点击嵌套的listviewitem时,也会选择父listviewitem。 例: enter image description here

在上面的图像中,选择了Lista2(父列表项)。 用户从Lista1单击Linia6以选择它。选择Lista1(嵌套列表项)中的Linia6时,还要选择Lista1(父列表项)。

此外,如果可以在后面的代码上执行此操作,而不是XAML

我的代码

<ListView ItemsSource="{Binding listsToDisplay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="200">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Width="250"  Text="{Binding listName}"></TextBlock>
                        <ListView ItemsSource="{Binding listContent}">
                        </ListView>
                    </StackPanel>

                </DataTemplate>
            </ListView.ItemTemplate>

1 个答案:

答案 0 :(得分:1)

如果嵌套SelectedItem的{​​{1}}属性未被其他方式使用,则可以使用转换器将其绑定到其父级的ListView。请注意,父列表视图中的ListViewItem.IsSelected对于避免转换器进行双重选择非常重要。

SelectionMode="Single"

转换器代码:

<Grid x:Name="grid1">
    <Grid.Resources>
        <local:SelectedItemTransferConverter x:Key="ItemSelectedConverter"/>
    </Grid.Resources>
    <ListView ItemsSource="{Binding listsToDisplay}" SelectionMode="Single">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding listName}"/>
                    <ListView
                        ItemsSource="{Binding listContent}"
                        SelectedItem="{Binding IsSelected,RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}},Converter={StaticResource ItemSelectedConverter}}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>