目前我有一个 ListView(使用详细信息视图)。我想实现这样的行为,即当用户选择单个项目(日志条目)时,日志条目会扩展(从一行到多行)以提供有关发生的错误的更详细信息。
我的问题是:这可能吗?如果是这样,是否有一个很好的资源可以用来帮助我?
编辑:
如果我必须使用WPF,那么我想我会使用带有控件的 ElementHost。但是,我完全不知道如何设计/编码/使用 WPF 组件。有什么建议么?
编辑:对不起,这是 wpf
我用来实现相同目的的技巧是创建一个触发器来显示默认为折叠的辅助网格。
试试这个:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Height="20" >
<TextBlock Text="Not Selected"></TextBlock>
</Grid>
<Grid x:Name="selectedOnlyGrid" Grid.Row="1" Visibility="Collapsed">
<TextBlock Text="Selected"></TextBlock>
</Grid>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}, AncestorLevel=1}, Path=IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible" TargetName="selectedOnlyGrid" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在此处阅读 CodeProject 上的帖子:扩展列表框
应该有你需要的所有信息:)
使用 ListView 执行此操作的一种方法是在选择“父级”时为您想要的每个额外行动态添加一个新的 ListViewItem。Similarly, you'll need to remove them when the selection changes to another item.
您可能还希望覆盖默认的向上/向下行为以跳过子项。
不是您问题的直接答案,但我认为在这种情况下您最好使用网格。