我是学生,目前在窗口电话上做项目。基本上,我正在创建一个库应用程序。问题是,当我使用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));
}
}
}
}
答案 0 :(得分:0)
根据SelectionChanged事件获得SelectedItem或SelectedIndex后,您可以导航到相应的页面。
答案 1 :(得分: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
}
//...
}
如果您真的想要导航到完全不同的页面,则只需修改Navigation Uri
this.NavigationService.Navigate(new Uri(string.Format("/Room{0}.xaml", data.Room), UriKind.Relative)
注意:但通常您只想根据传递给它的数据调整页面内容。