WPF:将数据插入ListBoxItem中的ListBox

时间:2010-01-27 14:39:12

标签: c# wpf binding listbox listboxitem

我正在尝试创造看上去ListboxListBoxItem被选中之后应该会扩展,但问题是,它们还应该包含另一个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>

2 个答案:

答案 0 :(得分:1)

听起来你正在寻找的是一棵树。我认为TreeView控件对于你正在寻找的东西是理想的。

答案 1 :(得分:0)

在您要显示的项目中,我假设您有一个属性列表(T)或与普通列表框项目源兼容的其他类型。为了举例,我们将它命名为ListPr。

在数据模板中,添加一个listBox控件并将ItemsSource设置为{Binding Path = ListPr}。它应该就是这样。在新的列表框中,您将能够定义另一个数据模板,依此类推。

就像在另一篇文章中提到的那样,在这种情况下,树视图可能就是你需要的。

希望有所帮助。