【问题标题】:how to navigate from a listbox in windows phone 7 application如何从 Windows Phone 7 应用程序中的列表框导航
【发布时间】:2014-02-06 12:13:16
【问题描述】:

我正在为 Windows Phone 7 构建一个应用程序,其中在 ListBox 中显示来自 Web 服务的数据。
WebService 包含以下数据: 新闻标题、新闻描述、日期开始和图像路径。
在列表框中,我显示了新闻标题、开始日期和图像路径。
现在单击列表框中的一个项目时,我想导航到另一个页面,该页面应显示所有三个详细信息以及新闻描述。

我的 xaml 是:

<ListBox Name="listBox1" SelectionChanged="listBox1_SelectionChanged">
           <!-- SelectionChanged="listBox1_SelectionChanged"-->
            <ListBox.ItemTemplate>
            <DataTemplate>
                    <Button>
                        <Button.Content>
                       <ScrollViewer HorizontalScrollBarVisibility="Auto" Height="80" Width="400">
                           <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
                                    <Image Source="{Binding ImageBind }" Height="80" Width="120"/>
                                    <StackPanel Orientation="Vertical">
                                  <TextBlock Text="{Binding Path=News_Title}" TextWrapping="Wrap"></TextBlock>
                                 <!-- <TextBlock Text="{Binding Path=News_Description}" TextWrapping="Wrap"></TextBlock>-->
                                        <TextBlock Text="{Binding Path=Date_Start}" TextWrapping="Wrap" ></TextBlock>
                                     </StackPanel>
                                  </StackPanel>
                            </ScrollViewer>
                        </Button.Content>
                    </Button>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

.cs 文件是:

 public News()
 {
     InitializeComponent();

     KejriwalService.aapSoapClient client = new KejriwalService.aapSoapClient();
     client.getarvindNewsCompleted += new EventHandler<KejriwalService.getarvindNewsCompletedEventArgs>(client_getarvindNewsCompleted);
     client.getarvindNewsAsync();

     progressName.Visibility = System.Windows.Visibility.Visible;
 }

 void client_getarvindNewsCompleted(object sender, KejriwalService.getarvindNewsCompletedEventArgs e)
 {
     string result = e.Result.ToString();
     List<Newss> listData = new List<Newss>();
     XDocument doc = XDocument.Parse(result);

     progressName.Visibility = System.Windows.Visibility.Collapsed;

     foreach (var location in doc.Descendants("UserDetails"))
     {
         Newss data = new Newss();

         data.News_Title = location.Element("News_Title").Value;
         //data.News_Description = location.Element("News_Description").Value;
         data.Date_Start = location.Element("Date_Start").Value;
         data.image_path = location.Element("image_path").Value;
         data.ImageBind = new BitmapImage(new Uri( @"http://political-leader.vzons.com/ArvindKejriwal/images/uploaded/"+data.image_path, UriKind.Absolute));

         listData.Add(data);
     }

     listBox1.ItemsSource = listData;
}

现在在新页面中说 newsdetails.xaml 我想从此页面导航并显示完整的详细信息。
请帮忙。
我被困在这个领域,因为我是这个领域的新手。
如果完成了,我的应用程序就差不多完成了。

 private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (listBox1.SelectedIndex == -1)
            return;
        var item = listBox1.SelectedItem as Newss;
        if (!IsolatedStorageSettings.ApplicationSettings.Contains("SelectedObject"))
        {
            IsolatedStorageSettings.ApplicationSettings["SelectedObject"] = item;
            NavigationService.Navigate(new Uri("/NewsDetails.xaml", UriKind.Relative));
        }
    }

【问题讨论】:

  • 根据您的问题,您可以使用 listbox_selectionChanged 事件,并且您可以使用 switch case 。对于特定选定的索引,您可以通过导航服务导航到特定页面。据我了解您的问题,我建议这样做.
  • @djFox... 你能先建议我如何根据我编写的代码导航到一个新页面说 newsdetails.xaml onclicking 一个列表框项目。你能写代码吗?
  • 你的 selection_change 事件代码在哪里
  • @djFox...请看我刚刚发布的代码
  • @djFox... 请参阅我为导航编写的代码。它没有导航

标签: c# xaml windows-phone-7 listbox


【解决方案1】:

在您的列表框选择更改事件所在的页面中定义静态全局变量:

public static string title;
public static string news_description;

在列表框选择更改时分配这些变量:

private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (listBox1.SelectedIndex == -1)
            return;
        var item = listBox1.SelectedItem as Newss;
        if (!IsolatedStorageSettings.ApplicationSettings.Contains("SelectedObject"))
        {
            IsolatedStorageSettings.ApplicationSettings["SelectedObject"] = item;
            title=item.News_Title;
            news_description=item.News_Description;
            NavigationService.Navigate(new Uri("/NewsDetails.xaml", UriKind.Relative));
        }
    }

在您的导航 NewsDetails.cs 页面中访问这些项目,如下所示:

string Title=YourPageName.title;//
string Description=YourPageName.news_description;

根据需要显示这些值

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多