在我的ViewModel中,我有一个对象的集合,每个对象都包含另一个集合。我试图通过使用嵌套的ListView ItemTemplates在我的视图中显示。这里是我的视图模型代码的简化:如何在Metro/WinRT中绑定嵌套ListView ItemTemplates的数据?
public ViewModelObject
{
public ObservableCollection<OuterObject> OuterCollection { get; }
}
public OuterObject
{
public string OuterTitle;
public ObservableCollection<InnerObject> InnerCollection { get; }
}
public InnerObject
{
public string InnerTitle;
}
而这就是我如何尝试使用此视图模型在我的XAML简化:
<ListView ItemsSource="{Binding OuterCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding OuterTitle}"/>
<ListView ItemsSource="{Binding InnerCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding InnerTitle}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果我删除了内部的ListView中,外部ListView绑定工作得很好。我只是不知道如何正确地将内部集合对象绑定到内部ListView。我尝试了与{Binding OuterCollection.InnerCollection}
,{Binding DataContext.InnerCollection}
和{Binding RelativeSource={RelativeSource TemplatedParent}, Path=InnerCollection}
进行内部绑定,但所有这些都会导致它崩溃。什么是实现这种嵌套绑定的正确方法?
编辑:我要补充,这是从Windows Phone 7的被移植的应用程序,它是找到LongListSelector
的替代者,这是不提供的WinRT的尝试。
这对我有用!我疯了试图弄清楚。有一个问题 - 您是否必须将{Binding InnerTitle}更改为其他内容?我看到所有我的ListView元素都正确创建,但{Binding InnerTitle}不起作用。 – Weston 2012-08-19 03:56:51
没关系 - 我的问题是,我没有意识到'公共字符串名称'''不绑定,而'公共字符串名称{获取;组; ''确实。 – Weston 2012-08-19 16:11:36