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

由于您的问题不太清楚,我假设您知道如何按下该项目,而您的问题是如何仅导航到正确的页面。

在点击处理程序中执行以下操作

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));
}

在您的房间页面的 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
        }
        //...
    }

如果你真的想导航到一个完全不同的页面,你只需要修改 Navigation Uri

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

注意:但通常你只想根据传递给它的数据来调整页面的内容。

于 2013-01-07T14:56:24.087 回答
0

一旦您有了基于 SelectionChanged 事件的 SelectedItem 或 SelectedIndex,您就可以导航到相应的页面。

于 2013-01-07T14:22:47.417 回答