0

監視可能なコレクションの配列があり、これらすべてのコレクションを 1 つのリスト ボックスに表示したいと考えています。これらの各コレクションのデータは同じタイプであり、特定のカテゴリに基づいて分離されています。

私の質問は、リストボックスの DataTemplate にリストボックスを含めることは可能ですか?

4

1 に答える 1

1

はい、例として、Xaml:

<UserControl x:Class="SilverlightApplication1.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox ItemsSource="{Binding }">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel >
                        <TextBlock Text="{Binding Name}" />
                        <ListBox ItemsSource="{Binding InnerList}">
                            <TextBlock Text="{Binding }" />
                        </ListBox>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>

コード:

using System.Collections.Generic;
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            this.DataContext = new List<Data>() 
            { 
                new Data(){Name = "First"},
                new Data(){Name = "Second"},
                new Data(){Name = "Third"},
                new Data(){Name = "FourthWithDifferentData", InnerList=new List<string>(){"a", "b", "c"}}
            };
        }
    }
}

public class Data
{
    public List<string> InnerList { get; set; }
    public string Name { get; set; }
    public Data()
    {
        InnerList = new List<string>(){"String1", "String2", "String3"};
    }
}
于 2009-07-12T12:41:59.123 に答える