テンプレート化されたデータバインドされたピボットに PivotItem を動的に追加する際に問題があります。
使用中のクラス (すぐに理解できるように少し簡略化しています);
class Menu {
string Name
List<Dish> Dishes_1;
List<Dish> Dishes_2;
List<Dish> Dishes_3;
}
class Dish {
string Description
string Price;
}
ピボットを使用して、メニュー オブジェクトのリストを表示したいと考えています。そのリスト内のアイテムの数に基づいて動的に PivotItems を作成します。したがって、各 PivotElement は同じレイアウトに従い、同じように動作する必要があります。レイアウト テンプレートとデータ バインディングは、次のように .xaml で行われます。
<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>
Pivot in de .cs ファイルに次の情報を入力します。
foreach (Menu m in List_Menus) {
PivotItem p = new PivotItem();
p.DataContext = m;
Mainpivot.Items.Add(p);
}
DataContext を Menu-Object として設定すると、(xaml を介した) DataBinding は、ここでこれ以上コードを必要としないはずです (そう思いますか?)。
問題は今です。うまくいかない...
デバッガーで見ると、作成された PivotItem は Mainpivot で定義されたテンプレートのように動作しないようです (またはそう思います)。Mainpivot を見ると、PivotItems が追加されていることがわかりますが、それだけです。すべて空の PivotItems が空のだけだと思います。エミュレーターで実行すると、空のピボットが表示されるだけです。
何かご意見は?
//PS: ViewModel は (初心者にとって) 概念としてかなり混乱するので、使用しません。私はそれが問題とは何の関係もないと思いますか?