我有一个包含文本块和另一个列表的列表视图。
我希望当用户点击嵌套的listviewitem时,也会选择父listviewitem。
例:
在上面的图像中,选择了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>
答案 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>