我遇到了动态添加 PivotItem 到模板和数据绑定的 Pivot 的问题。
使用的类(为了快速理解,有些简化):
class Menu {
string Name
List<Dish> Dishes_1;
List<Dish> Dishes_2;
List<Dish> Dishes_3;
}
class Dish {
string Description
string Price;
}
我希望使用数据透视表来显示菜单对象列表。根据列表中的项目数量动态创建 PivotItems。因此,每个 PivotElement 应该遵循相同的布局并具有相同的行为。布局模板和数据绑定如下所示:
<phone:Pivot x:Name="Mainpivot">
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</phone:Pivot.HeaderTemplate>
<phone:Pivot.ItemTemplate>
<DataTemplate>
<ListBox>
<TextBlock Text="Dishes_1"/>
<ListBox ItemsSource="{Binding Dishes_1}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Description}"/>
<TextBlock Text="{Binding Price}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
// ...
// this is repeated 3 times;
//a textblock and listbox per List<Dishes> in the Menu-class
</ListBox>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
我在 .cs 文件中使用以下代码填充数据透视表:
foreach (Menu m in List_Menus) {
PivotItem p = new PivotItem();
p.DataContext = m;
Mainpivot.Items.Add(p);
}
当我将DataContext设置为Menu-Object时,数据绑定(通过xaml)不需要在这里再添加任何代码(我认为是这样的?)。现在的问题是; 它没有起作用... 通过调试器查看,它似乎创建的PivotItem与Mainpivot中定义的模板不同(或者我认为是这样的)。查看Mainpivot确实显示已添加了PivotItems,但仅此而已,我相信它们只是空的所有null PivotItems。在仿真器中执行时,它只显示一个空的Pivot。有什么想法吗? PS:作为初学者,我发现ViewModels非常令人困惑,因此我不使用它们。我不认为这与问题有任何关系?