我有一个自定义列表框。一些集合的项目具有“名称”,“文本”,“图像”和“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));
}
但发件人有图像类型。
答案 0 :(得分:1)
您可以调用图像发件人的Parent
来获取其容器(或多次调用它,具体取决于您的xaml的结构),然后查看容器Children
找到您要找的文本框。例如,您可能想要执行此类操作(在xaml中设置包含您的网址的文本框的Tag
属性)。
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
项的属性。< / p>