如何绑定嵌套类?

时间:2014-07-01 14:36:43

标签: c# wpf xaml binding

这是我的班级:

public class Person
{
    public string Name { get; set; }
    public string Age { get; set; }
    public List<Sweet> sweetList { get; set; }

    public Person()
    {
        sweetList = new List<Sweet>();
    }
}

public class Sweet
{
    public string Id{ get; set; }
}

在MainPage.xaml中设置

DataContext = personList;

在XAML中

<phone:LongListSelector ItemsSource="{Binding personList}" >
 <phone:LongListSelector.ItemTemplate>
      <DataTemplate>
           <TextBlock Text="{Binding Name}" />
           <TextBlock Text="{Binding sweetList.Id}" />
      </DataTemplate>
 </phone:LongListSelector.ItemTemplate>

如何将此类绑定到XAML? 在结果中我只看到Name,但带有sweetList.Id的textBlock为空 请帮忙

2 个答案:

答案 0 :(得分:0)

您正在为'personList'中的每个项目设置项目模板,但您对'sweetList'没有做同样的事情。

由于sweetList是一个List,而不仅仅是一个Sweet,您需要通过执行类似sweetList [0] .Id的操作来访问列表中的第一个,或者您可能希望从列表中显示每个屏幕,在这种情况下,你需要做类似于你对personList做的事情。

答案 1 :(得分:0)

要在WPF中显示集合,您需要使用容器控件,例如ListBox

<DataTemplate>
    <StackPanel>
        <TextBlock Text="{Binding Name}" />
        <ListBox ItemsSource="{Binding sweetList}">
            <ListBox.ItemTemplate>
                <TextBlock Text="{Binding Id}" />
            </ListBox.ItemTemplate>
    </StackPanel>
</DataTemplate>

然后你还需要告诉框架如何显示你的Sweet类,这是内部ListBox.ItemTemplate正在做的事情。