在 WPF itemscontrol 中查找控件
您好,我在项目控制的数据模板中只有几个文本框。 当我将项目控件绑定到可观察集合时,我得到两个文本框。 但我需要根据每个文本框进行一些操作,我想使用某个 id 分别查找每个文本框。
任何人都可以帮助如何在 WPF 的 itemscontrol 中找到控件。
Hi i have few a single textbox within the the datatemplate for itemscontrol. When i bind the itemcontrols to a observable collection i get two text boxes. But i need to do some manipulations based on each of the text boxes for which i want to find each textbox seperatly using some id.
Can anybody help on how to find a control witin the itemscontrol in WPF.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 ItemContainerGenerator,您可以获得为项目生成的容器,并向下遍历可视化树以找到您的 TextBox。 在 ItemsControl 的情况下,它将是 ContentPresenter,但 ListBox 将返回 ListBoxItem,ListView 将返回 ListViewItem 等。
如果需要,您还可以通过使用以下方式通过索引获取容器
Using the ItemContainerGenerator you can obtain the generated container for an item and traverse the visual tree downwards to find your TextBox. In the case of an ItemsControl it will be a ContentPresenter, but a ListBox will return a ListBoxItem, ListView a ListViewItem, etc.
You can also obtain the container by index if you want by using
谢谢布莱斯,我试图勾选向上箭头,但它说我的评分太低了! 对不起!
我修改了代码以返回给定类型的所有子项的所有列表,因为这是我所需要的,并且认为其他人可能会发现它有用。
再次感谢布莱斯,真的很有帮助 - 对于评级问题感到抱歉!
Thanks Bryce, I tried to tick the up arrow but it says my rating is too low! Sorry!
I amended the code to return all a list of all the children of the given type as it was what I needed and thought someone else might find it useful.
Thanks again Bryce, really helpful - sorry about the rating thing!
您可能想尝试使用 VisualTreeHelper。 ItemsControl 本身的属性仅允许您获取其绑定到的数据,而不是用于可视化数据的模板实例,而 VisualTreeHelper 允许您在 WPF 呈现可视化树时浏览它。
如果您(递归地)迭代父 ItemControl 的可视子项,那么您应该不会有任何困难找到您在屏幕上看到的文本框。
You may want to try using VisualTreeHelper. The properties on ItemsControl itself will only allow you to get the data its bound to, not the template instances used to visualize the data, while VisualTreeHelper allows you to browse around the visual tree as WPF has rendered it.
If you iterate through the parent ItemControl's visual children (recursively), you shouldn't have any difficulty locating the text boxes you are seeing on screen.
另一个例子:
Another example:
如果您有数据网格和模板列,其中包含数据模板,
您可以使用以下代码示例
If you have data grid and template column, which contains data template,
you can use the following code sample