我正在尝试创造看上去Listbox
。 ListBoxItem
被选中之后应该会扩展,但问题是,它们还应该包含另一个ListBox
,其中包含有关特定项目的一些细节,我不知道如何将一些数据放入它。
我试过从C#代码访问它并在XAML中绑定它但我仍然没有接近解决方案。
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="SelectedTemplate">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path = Order}" Style="{StaticResource SampleListCellItem}" MinWidth="35"/>
<TextBlock Text="{Binding Path = FullName}" Style="{StaticResource SampleListCellItem}" Width="340"/>
<TextBlock Text="{Binding Path = FirstName}" Style="{StaticResource SampleListCellItem}" Width="200" />
<TextBlock Text="{Binding Path = BirthDate, StringFormat = d}" Style="{StaticResource SampleListCellItem}" Width="100"/>
</StackPanel>
<StackPanel HorizontalAlignment="Right">
<ListBox Name="InnerList" Height="200" Width="200"/>
<Button Name="Button1" Height="40" Width="100" Content="ButtonText" Visibility="Visible"/>
</StackPanel>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="ItemTemplate">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path = Order}" Style="{StaticResource SampleListCellItem}" MinWidth="35"/>
<TextBlock Text="{Binding Path = FullName}" Style="{StaticResource SampleListCellItem}" Width="340"/>
<TextBlock Text="{Binding Path = FirstName}" Style="{StaticResource SampleListCellItem}" Width="200" />
<TextBlock Text="{Binding Path = BirthDate, StringFormat = d}" Style="{StaticResource SampleListCellItem}" Width="100"/>
</StackPanel>
</StackPanel>
</DataTemplate>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
<Setter Property="ContentTemplate" Value="{StaticResource ItemTemplate}"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ContentTemplate" Value="{StaticResource SelectedTemplate}"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</UserControl.Resources>
答案 0 :(得分:1)
听起来你正在寻找的是一棵树。我认为TreeView控件对于你正在寻找的东西是理想的。
答案 1 :(得分:0)
在您要显示的项目中,我假设您有一个属性列表(T)或与普通列表框项目源兼容的其他类型。为了举例,我们将它命名为ListPr。
在数据模板中,添加一个listBox控件并将ItemsSource设置为{Binding Path = ListPr}。它应该就是这样。在新的列表框中,您将能够定义另一个数据模板,依此类推。
就像在另一篇文章中提到的那样,在这种情况下,树视图可能就是你需要的。
希望有所帮助。