gpt4 book ai didi

wpf - 检索 ItemsControl 的子项

转载 作者:行者123 更新时间:2023-12-04 16:46:22 29 4
gpt4 key购买 nike

在上面的 XAML 代码中,我使用下面的代码获取子项(ItemsCotnrol x:Name="PointsList)并获取计数 = 0。你能帮我解决这个问题吗。

        int count = VisualTreeHelper.GetChildrenCount(pointsList);
if (count > 0)
{
for (int i = 0; i < count; i++)
{
UIElement child = VisualTreeHelper.GetChild(pointsList, i) as UIElement;
if (child.GetType() == typeof(TextBlock))
{
textPoints = child as TextBlock;
break;
}
}
}

pointsList 定义如下。
pointsList = (ItemsControl)GetTemplateChild("PointsList"); 

最佳答案

当您在后面的代码中使用 myPoints 时,您可以使用 ItemContainerGenerator获取ContainerForItem。只需传递您的一件元素即可获得容器。

使用辅助方法 GetChild 获取每个项目的文本块的代码:

for (int i = 0; i < PointsList.Items.Count; i++)
{
// Note this part is only working for controls where all items are loaded
// and generated. You can check that with ItemContainerGenerator.Status
// If you are planning to use VirtualizingStackPanel make sure this
// part of code will be only executed on generated items.
var container = PointsList.ItemContainerGenerator.ContainerFromIndex(i);
TextBlock t = GetChild<TextBlock>(container);
}

从 DependencyObject 获取子对象的方法:
public T GetChild<T>(DependencyObject obj) where T : DependencyObject
{
DependencyObject child = null;
for (Int32 i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child.GetType() == typeof(T))
{
break;
}
else if (child != null)
{
child = GetChild<T>(child);
if (child != null && child.GetType() == typeof(T))
{
break;
}
}
}
return child as T;
}

关于wpf - 检索 ItemsControl 的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788422/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com