[code=XAML]
<ListBox Name="myListBox" >
<ListItemBoxItem>
<Image Source="1.jpg" Tag="1"></Image>
<ListemBoxItem>
<ListBox>
[/code]
如何取出Image的Tag值1?
请高手指点,在线等,顶的一样散分
<ListBox Name="myListBox" >
<ListItemBoxItem>
<Image Source="1.jpg" Tag="1"></Image>
<ListemBoxItem>
<ListBox>
[/code]
如何取出Image的Tag值1?
请高手指点,在线等,顶的一样散分
ListBoxItem lbi = myListBox.Items[0] as ListBoxItem;
if (lbi != null)
{
Image img = lbi.Content as Image;
if (img != null)
MessageBox.Show(img.Tag.ToString());
}
一个通用的方法:
参数:你选中的ListBoxItem
返回值:ListBoxItem内所包含的Image
public childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
if (obj == null)
{
return null;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
当然,以上的方法只能在只有一个Image的情况下适用,要想找到任意一个控件,则需要指定Name
用一下方法:
public object FindChildElementByName(DependencyObject obj, String name)
{
if (obj == null)
return null;
object oname = obj.GetValue(Control.NameProperty);
if (oname != null && oname.ToString().Equals(name))
{
return obj;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
object obj_1 = FindChildElementByName(VisualTreeHelper.GetChild(obj, i), name);
if (obj1 != null)
{
return obj_1;
}
}
return null;
}
例如:
List<A> list = new List<A>();
listBox.ItemSource = list;可以A a = ListBox.SelecetItem as A;if(null != a)
{
这样可以访问A中的任意属性
}ListBox绑定在一个集合上有时候是很必要的,不同的集合类型,可以自己实现很多功能,例如自动排序等等;