0

カスタムリストボックスがあります。コレクションの一部のアイテムには、「name」、「text」、「image」、および「url」フィールドがあります。その他のフィールドがある場合があります (テンプレート セレクターを使用します)。そのため、項目に「name」、「text」、「url」、および「image」フィールドがある場合、リストボックスに 2 つのテキストブロックと 1 つの画像として表示されます。画像をタップすると、プログラムは新しいウィンドウを開き、webBrowser を開き、アイテムのプロパティ「url」にある URL に移動する必要があります。あるページから別のページに情報を送信する方法は理解していますが、アイテムから「url」を取得する方法がわかりません。私は試した

    private void Video_Tap(object sender, GestureEventArgs e) // event when tap on the image
    {
        New tmp = ((sender as ListBox).SelectedItem as New); // New - is the type of collection's item
        string vid = tmp.Video.url; // Video has fields "image" and "url"

        string destination = string.Format("/Video_Page.xaml?uri={0}", vid );
        NavigationService.Navigate(new Uri(destination, UriKind.Relative));
    }

しかし、送信者には画像タイプがあります。

4

1 に答える 1

1

イメージ センダーを呼び出しParentてコンテナーを取得し (または、xaml の構造に応じて複数回呼び出します)、コンテナーChildrenを調べて、探しているテキスト ボックスを見つけることができます。たとえば、このようなことをしたいかもしれません ( Tagxaml で URL を含むテキスト ボックスのプロパティを設定して)。

var grid = (Grid) ((Image) sender).Parent;
foreach (var child in grid.Children)
{
    if (child is TextBox && ((TextBox) child).Tag == "URL")
    {
        return (Textbox) child;
    }
}

または、常に使用できる ListBox への参照が必要な場合は、xaml に設定するだけx:Name = "_MyListbox"で、クラスのフィールドになります。

ListBox.SelectedItem最後のオプションとして、現在選択されているアイテムを含むプロパティを常に持つように、にバインドする方が簡単かもしれないと思いNewます。

于 2012-12-08T17:48:21.267 に答える