Silverlight 银光手风琴。如何收缩到数据绑定集合上的内容
我有手风琴,一定会收藏的。我需要应用变通方法,使Accordion根据内容调整其子项的大小(即,如果已从绑定集合中删除项目,我需要Accordion收缩,如果已添加,则需要Accordion展开) 但是,我发现的所有解决方法都使用AccordionItem对象。它们都在XAML中设置了AccordionItem项,因此它们的accordion.items是AccordionItem对象的集合 虽然我绑定到myObject,但它们被放置在ItemContainerStyleTemplate中的AccordionItem对象中。我唯一需要的就是以某种方式访问那个手风琴项目。如果我尝试accordion.Items[0].GetType()之类的操作,它将返回myObject 所以问题是-如何从数据绑定的Accordion访问AccordionItem对象? 我想尝试的解决方法:(编辑:它可以根据我的需要工作)Silverlight 银光手风琴。如何收缩到数据绑定集合上的内容,silverlight,c#-4.0,silverlight-toolkit,silverlight-5.0,Silverlight,C# 4.0,Silverlight Toolkit,Silverlight 5.0,我有手风琴,一定会收藏的。我需要应用变通方法,使Accordion根据内容调整其子项的大小(即,如果已从绑定集合中删除项目,我需要Accordion收缩,如果已添加,则需要Accordion展开) 但是,我发现的所有解决方法都使用AccordionItem对象。它们都在XAML中设置了AccordionItem项,因此它们的accordion.items是AccordionItem对象的集合 虽然我绑定到myObject,但它们被放置在ItemContainerStyleTemplate中的Ac
我不得不做类似于手风琴的事情,而我能找到手风琴项目的唯一方法就是在视觉树上行走 我是这样做的:考虑到这些扩展方法:
public static IEnumerable<DependencyObject> GetAllChildrenOfType(this DependencyObject depObject, Type t, bool recursive = true)
{
List<DependencyObject> objList = new List<DependencyObject>();
var childrenList = depObject.GetChildren();
foreach (DependencyObject i in childrenList)
{
Type ct = i.GetType();
if (ct == t)
objList.Add(i);
if (recursive)
objList.AddRange(i.GetAllChildrenOfType(t));
}
return objList.ToArray();
}
public static IEnumerable<DependencyObject> GetChildren(this DependencyObject depObject)
{
int count = depObject.GetChildrenCount();
for (int i = 0; i < count; i++)
{
yield return VisualTreeHelper.GetChild(depObject, i);
}
}
这可能比需要的要复杂一点,在我的例子中,我在手风琴里放了一个手风琴,这使得事情最终变得很困难
public static IEnumerable<DependencyObject> GetAllChildrenOfType(this DependencyObject depObject, Type t, bool recursive = true)
{
List<DependencyObject> objList = new List<DependencyObject>();
var childrenList = depObject.GetChildren();
foreach (DependencyObject i in childrenList)
{
Type ct = i.GetType();
if (ct == t)
objList.Add(i);
if (recursive)
objList.AddRange(i.GetAllChildrenOfType(t));
}
return objList.ToArray();
}
public static IEnumerable<DependencyObject> GetChildren(this DependencyObject depObject)
{
int count = depObject.GetChildrenCount();
for (int i = 0; i < count; i++)
{
yield return VisualTreeHelper.GetChild(depObject, i);
}
}
var accordionItemList = myAccordion.GetAllChildrenOfType(typeof(AccordionItem));
foreach (AccordionItem i in accordionItemList)
{...}