0

状況:
2 つのパノラマ アイテムを含むパノラマ コントロールがあります。最初の項目にはオプションのリストが含まれており、そのうちの 1 つを選択すると、パノラマ コントロールが 2 番目の項目に切り替わります。ご理解のとおり、2 番目の項目の内容は毎回動的に更新する必要があります。さらに、ItemTemplate はオプションごとに異なる必要があります。
私の解決策:
切り替える必要があるたびにパノラマコントロールを作成することにしました(プログラムでパノラマアイテムを切り替える唯一の方法は、ページのリロードが必要な DefaultItem プロパティを変更するか、これを非表示にして別のコントロールを表示することです)。このソリューションは機能しますが、パノラマ アイテムごとに異なる ItemTemplate を割り当てる必要があります。(テンプレートは xaml にあります。割り当てるだけで済みます)。
質問:
私の解決策は正しいですか?また、コード ビハインドで ItemTemplate を割り当てるにはどうすればよいですか?

4

2 に答える 2

2

コードビハインドでItemTemplateを割り当てるにはどうすればよいですか?

解決策は次のようになります。

public void constructUI()
{

Panorama panoramactrl = new Panorama();

PanoramaItem panoramaItem = new PanoramaItem();
panoramaItem.Header = "main";
PanoramaItem panoramaItem1 = new PanoramaItem();
panoramaItem1.Header = "not main";

ListBox listBox = new ListBox();
listBox.ItemsSource = CreatePanoramaItems();

DataTemplate itemTmp = (DataTemplate)XamlReader.Load(

    @"<DataTemplate xmlns=""http://schemas.microsoft.com/client/2007"">
    <StackPanel Tag=""{Binding id}"">
    <TextBlock Text=""{Binding FirstRaw}"" Foreground=""Red"" FontSize=""40"" />
    <TextBlock Text=""{Binding SecondRaw}"" Foreground=""Orange"" FontSize=""30"" Margin=""10,0,0,0"" />
    </StackPanel>
    </DataTemplate>");

listBox.ItemTemplate = itemTmp;
panoramaItem.Content = listBox;
panoramactrl.Items.Add(panoramaItem);
panoramactrl.Items.Add(panoramaItem1);
this.LayoutRoot.Children.Add(panoramactrl);

}

private List<Data> CreatePanoramaItems()
{
    List<Data> Panoramaitems = null;
    Panoramaitems = new List<Data> 
    { 
    new Data("123", "456", "1"),
    new Data("234", "567", "2"),
    new Data("345", "678", "3")
    };
    return Panoramaitems;
}

これが誰かに役立つことを願っています。

于 2012-09-20T11:47:25.077 に答える
1

あなたの解決策は良くないと思います。WP7 ガイドラインでわかるように:

  • ウィザード アプリケーションのように、タスク ベースのナビゲーションにピボット コントロールを使用しないでください。

パノラマも同様です。ユーザーがアイテムを選択したときに、別のページに移動することをお勧めします。

People ハブを参照してください。個人を選択すると、電話機に個人の詳細ページが表示されます。

于 2012-09-20T11:13:23.843 に答える