コードを使用してパノラマアイテムを追加する際に問題が発生しました。
これが機能するテストxamlです。
<controls:Panorama x:Name="pano">
<controls:Panorama.Title>...</controls:Panorama.Title>
<controls:Panorama.Background>...</controls:Panorama.Background>
<local:TestPanoramaItem ...></local:HoroscopePanoramaItem>
<local:TestPanoramaItem ...></local:HoroscopePanoramaItem>
<local:TestPanoramaItem ...></local:HoroscopePanoramaItem>
</controls:Panorama>
TestPanoramaItemは、PanoramaItemから継承するクラスであり、xamlではすべて正常に機能します。ここで、パノラマアイテムをコードで並べ替えたいと思います。
編集:これからxamlからアイテムを削除しました
「pan1、pan2、pan3、...」のような静的文字列でデフォルトの順序を作成し、OnNavigatedToHandler(MainPage内)では次のようなコードを使用します。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
String[] order = App.Order.Split(',');
App.items.Clear();
foreach (String o in order)
{
switch (o)
{
case "pan1": App.items.Add(App.pan1); break;
case "pan2": App.items.Add(App.pan2); break;
case "pan3": App.items.Add(App.pan3); break;
...
}
}
pano.Items.Clear();
foreach (TestPanoramaItem ti in App.items)
pano.Items.Add(ti);
base.OnNavigatedTo(e);
}
初めて呼び出された(これはMainPageにあります)すべてが正常に見えます。パノラマは動作します。アイテムの順序を変更できる設定に移動するメニューボタンがあります。設定ページのOnNavigateFromハンドラーで、App.Order静的文字列を更新します。その後、メインページのOnNavigatedToが再度呼び出され、すべてが正常に実行されます(例外はありません)が、パノラマを移動できず、パノラマアイテムのレイアウトが壊れています。
ヘルプや解決策はありますか?