gpt4 book ai didi

wpf - 在 WPF itemscontrol 中查找控件

转载 作者:行者123 更新时间:2023-12-03 11:30:59 25 4
gpt4 key购买 nike

嗨,我在 itemscontrol 的数据模板中只有几个文本框。当我将 itemcontrols 绑定(bind)到可观察集合时,我得到两个文本框。但我需要根据每个文本框进行一些操作,我想使用一些 id 分别找到每个文本框。

任何人都可以帮助如何在 WPF 中的 itemscontrol 中找到控件。

最佳答案

使用 ItemContainerGenerator 您可以获得项目的生成容器并向下遍历可视化树以找到您的 TextBox。对于 ItemsControl,它将是 ContentPresenter,但 ListBox 将返回 ListBoxItem,ListView 将返回 ListViewItem,等等。

ContentPresenter cp = itemsControl.ItemContainerGenerator.ContainerFromItem(item) as ContentPresenter;
TextBox tb = FindVisualChild<TextBox>(cp);
if (tb != null)
{
// do something with tb
}

public static T FindVisualChild<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
return (T)child;
}

T childItem = FindVisualChild<T>(child);
if (childItem != null) return childItem;
}
}
return null;
}

如果需要,您也可以通过索引获取容器
itemsControl.ItemContainerGenerator.ContainerFromIndex(0);

关于wpf - 在 WPF itemscontrol 中查找控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/980120/

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