在我的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