0

私は学生で、現在ウィンドウフォンでプロジェクトを行っています。基本的に、私はライブラリアプリを作成しています。問題は、listpicker を使用するときに、閲覧したい部屋の選択肢として、選択肢ごとに統合ボタンを使用することです。ボタンごとに異なるポートレート ページに移動できるようにしたい。例えば、「101号室」を選択して ボタンを押すと「101ページ」に、「102号室」を選択すると「102ページ」が開きます。ここに私のC#コードがあります

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Navigation;
    using Microsoft.Phone.Controls;
    using Microsoft.Phone.Shell;

    namespace Library
{
public partial class location : PhoneApplicationPage
{
    public class SampleData
    {   
        public string Floor
        {
            get;
            set;
        }
        public string Room
        {
            get;
            set;
        }

    }
    public location()
    {
        InitializeComponent();
        List<SampleData> dataSource = new List<SampleData>();
        dataSource.Add(new SampleData() { Floor = "First",Room = "101" });
        dataSource.Add(new SampleData() { Floor = "First",Room = "102" });
        dataSource.Add(new SampleData() { Floor = "First", Room = "103" });
       this.listPicker.ItemsSource = dataSource;
    }

          private void Button_Click(object sender, RoutedEventArgs e)
    {
        SampleData data = (sender as Button).DataContext as SampleData;
        ListPickerItem pressedItem =
        this.listPicker.ItemContainerGenerator.ContainerFromItem(data) as ListPickerItem;
           if (pressedItem != null )
        {
            this.NavigationService.Navigate(new Uri("/Room.xaml", UriKind.Relative));
        }
    }

}
}
4

2 に答える 2

0

SelectionChangedイベントに基づくSelectedItemまたはSelectedIndexを取得したら、適切なページに移動できます。

于 2013-01-07T14:22:47.417 に答える
0

あなたの質問はあまり明確ではないので、アイテムを押す方法を知っていると思います。あなたの問題は、正しいページにのみ移動する方法です。

クリック ハンドラーで次の操作を行います。

private void Button_Click(object sender, RoutedEventArgs e)
{
    SampleData data = (sender as Button).DataContext as SampleData;
    this.NavigationService.Navigate(new Uri("/Room.xaml?roomId=" + data.Room.ToString(), UriKind.Relative));
}

Room ページの OnNavigatedTo ハンドラーで、次のことができます。

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
         base.OnNavigatedTo(e);

        int roomId = (int)NavigationContext.QueryString["roomId"];

        if(roomId == 101)
        {
            //Modify page content for room 101
        }
        else if(roomId == 102)
        {
            //Modify page content for room 102
        }
        //...
    }

本当に別のページに移動したい場合は、ナビゲーション URI を変更するだけです。

this.NavigationService.Navigate(new Uri(string.Format("/Room{0}.xaml", data.Room), UriKind.Relative)

: ただし、通常は、渡されたデータに従ってページのコンテンツを調整したいだけです。

于 2013-01-07T14:56:24.087 に答える