Listpicker与按钮内选择

时间:2013-01-07 14:14:15

标签: c# windows-phone-7 listpicker

我是学生,目前在窗口电话上做项目。基本上,我正在创建一个库应用程序。问题是,当我使用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));
        }
    }

}
}

2 个答案:

答案 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)

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