2011-07-21 4 views
1

これは誰かに簡単な答えのように見えるかもしれませんので、私はこの問題を解決しようとする上で倍増してきたように私はこれに打撃を与えています。は別のページにデータをバインドさ、のWindows Phone 7

私はバインドさデータとlistboxitemtemplateにRSS情報を渡しますよ。各リストボックス項目にはイメージURLがあります。ユーザーがリストボックス項目をクリックし、その画像URLを新しいページに渡し、画像を表示するページを開くことができるようにします。

のみ問題がありますか?私はこれを働かせることはできません。ここで

は、私がこれまで持っているものです。

ページ1の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();に破壊され、それがnull参照の例外と言っています未処理だった。

この上の任意のヘルプは大歓迎以上になります。

答えて

1

私はあなたがListBoxItemとバインドされたオブジェクトRssItemが混乱していると思います。正しくバインドしている場合は、RssItemListBoxItem.DataContextに含まれるオブジェクトのタイプになります。

実際にはどのようなタイプと値sender見るためにデバッガを使用し、これを確認するには。

次のコードは、私の場合には動作します。それは、送信者を取り、そのDataContextのを取得し、その後、私のバインドされたオブジェクトの型にキャストします。

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

また、このようにSelectionChangedを使用すると、タッチ選択に微妙なバグを紹介し、あなたの詳細ページから、このリストに戻って、ナビゲートするときに可能性があることに注意してください。これらを避けるには、あなたのリスト項目のタップ・イベントを使用する必要があります。

0

SelectionChangedイベントは、すべてのUIフレームワークのイベントタイプobjectの場合、最初の引数sender、に準拠標準EventHandlerパターンを使用して、イベントのソースのUI要素です。この場合、イベントはListBoxによって送信されるため、送信者はListBoxへの参照になります。

がクリックされたアイテムを取得するには、 ListBox.SelectedItemプロパティを検査する必要があります。これはあなたの RssItemである必要があります。

ListBoxは、ナビゲーションには最適なコントロールではないことに注意する価値があります。最初は重すぎて(選択をサポートする不要なUI要素があります)、第2に、同じ要素ができるように選択をクリアする必要があります。元のリストページに戻るとクリックされます。

あなたがここに専用のナビゲーションコントロールを見つけることができます:あなたのコードから

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

関連する問題