如果我有一个从 ItemsControl
我是否可以访问它的子集,以便我可以通过它们来循环执行某些操作? 目前我似乎找不到任何简单的方法。
一个类似于 Seb's 但可能有更好的性能 。
for(int i = 0; i < itemsControl.Items.Count; i++)
{
UIElement uiElement =
(UIElement)itemsControl.ItemContainerGenerator.ContainerFromIndex(i);
}
看看这是否对你有帮助。
foreach(var item in itemsControl.Items)
{
UIElement uiElement =
(UIElement)itemsControl.ItemContainerGenerator.ContainerFromItem(item);
}
控件中的逻辑项和逻辑项之间是有区别的。UIElement
.
识别 ItemsControl
的数据绑定子控件(如 ToggleButton
),你可以用这个。
for (int i = 0; i < yourItemsControl.Items.Count; i++)
{
ContentPresenter c = (ContentPresenter)yourItemsControl.ItemContainerGenerator.ContainerFromItem(yourItemsControl.Items[i]);
ToggleButton tb = c.ContentTemplate.FindName("btnYourButtonName", c) as ToggleButton;
if (tb.IsChecked.Value)
{
//do stuff
}
}
我假设 ItemsControl.Items[index]
不工作,那么?
我不是在开玩笑,我也没有亲自检查过--这只是我的第一个猜测。 大多数情况下,一个控件会有一个 items indexer 属性,即使它是 databound。