Может ли DataTemplate списка в silverlight быть набором списков - PullRequest
0 голосов
/ 12 июля 2009

У меня есть массив наблюдаемых коллекций, и я хочу отобразить все эти коллекции в одном списке. Данные в каждой из этих коллекций относятся к одному типу, и они были разделены на основе определенной категории.

Итак, мой вопрос: возможно ли, чтобы DataTemplate списка содержал Listbox?

1 Ответ

1 голос
/ 12 июля 2009

Да, например, 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"};
    }
}
...