0

我有一个自定义列表框。一些集合的项目具有字段“名称”、“文本”、“图像”和“网址”。其他可能有其他字段(使用模板选择器)。因此,如果项目具有“名称”、“文本”、“网址”和“图像”字段 - 它在列表框中显示为 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

您可以调用ParentImage sender 以获取其容器(或多次调用,具体取决于您的 xaml 的结构),然后查看容器Children以找到您要查找的文本框。例如,也许您想做这样的事情(Tag在 xaml 中设置包含您的 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 的始终可用的引用,只需x:Name = "_MyListbox"在 xaml 中设置它,它将成为该类的一个字段。

作为最后一个选项,我认为绑定到 可能对您来说更容易ListBox.SelectedItem,因此您始终拥有一些包含当前选定New项目的属性。

于 2012-12-08T17:48:21.267 回答