【问题标题】:passing RSS binded data to another page, windows phone 7将 RSS 绑定数据传递到另一个页面,windows phone 7
【发布时间】:2011-07-21 02:59:56
【问题描述】:

对于某人来说,这似乎是一个简单的答案,所以我试一试,因为我已经加倍尝试解决这个问题。

我将 RSS 信息传递到带有绑定数据的 listbox itemtemplate。每个列表框项都有一个图像 URL。我希望用户能够单击列表框项,将该图像 URL 传递到新页面,然后打开显示图像的页面。

唯一的问题?我无法让它工作。

这是我目前所拥有的:

page1 XAML:

       <ListBox x:Name="listbox" Grid.Row="1" SelectionChanged="listbox_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Image Grid.Row="0" HorizontalAlignment="Left" Height="60" Width="60" Source="{Binding Url}"/>

                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Page1 cs

    private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var URLname = "";

        URLname = (sender as RssItem).Url.ToString();

    NavigationService.Navigate(new Uri("/SubmittedPic.xaml?image=" + URLname, UriKind.Relative));
    this.listbox.SelectedItem = (sender as ListBoxItem);

    }

代码在URLname = (sender as RssItem).Url.ToString(); 上中断,表示未处理空引用异常。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: c# windows-phone-7 rss listbox query-string


    【解决方案1】:

    根据您的代码,我认为您混淆了ListBoxItem 和绑定对象RssItem。如果您正确绑定,RssItem 将是 ListBoxItem.DataContext 中包含的对象的类型。

    要检查这一点,请使用调试器查看sender 的实际类型和值。

    以下代码适用于我的情况:它获取发送者并获取其 DataContext,然后将其转换为我的绑定对象的类型。

    FrameworkElement fe = (FrameworkElement)sender;
    RssItem rssItem = (RssItem) fe.DataContext;
    string url = rssItem.URL.ToString();
    

    另外,请注意,以这种方式使用 SelectionChanged 可能会在触摸选择以及从您的详细信息页面返回到此列表时引入细微的错误。为了避免这些,您应该在列表项上使用点击事件。

    【讨论】:

      【解决方案2】:

      SelectionChanged 事件使用标准的EventHandler 模式,所有 UI 框架事件都符合该模式,其中object 类型的第一个参数sender 是事件的源 UI 元素。在这种情况下,由于事件是由 ListBox 发出的,所以 sender 将是对您的 ListBox 的引用。

      要获得点击的项目,您需要检查ListBox.SelectedItem 属性。这应该是你的RssItem

      值得注意的是ListBox并不是最好的导航控件,首先它有点重量级(它有不必要的支持选择的UI元素),其次,你必须清除选择以便相同的元素返回原始列表页面时可以点击。

      您可以在此处找到专用的导航控件:

      http://www.scottlogic.co.uk/blog/colin/2011/04/a-fast-loading-windows-phone-7-navigationlist-control/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多