【发布时间】:2011-01-31 16:47:47
【问题描述】:
我对 WPF 很陌生,不知道该怎么做。我在选项卡控件的选项卡项中有一个文本框。如何以编程方式 (C#) 确定哪个选项卡项是此文本框的父项?我还想确定哪个选项卡控件是选项卡项的父项。
非常感谢。
【问题讨论】:
标签: wpf wpf-controls
我对 WPF 很陌生,不知道该怎么做。我在选项卡控件的选项卡项中有一个文本框。如何以编程方式 (C#) 确定哪个选项卡项是此文本框的父项?我还想确定哪个选项卡控件是选项卡项的父项。
非常感谢。
【问题讨论】:
标签: wpf wpf-controls
TabItem.Parent 将提供TabItem 的逻辑父元素;这将是关联的TabControl。您可以通过TabItem 对任何控件使用相同的方法。
((FrameworkElement)myTextBox.Parent).Parent;
如果项目在树中更深并且其深度变得未知,您将需要开始以递归方式处理它。
【讨论】:
您可以使用FrameworkElement.Parent 在 WPF 中向上遍历控件的层次结构。这应该让您(递归地)向上走,直到找到 TabItem,然后从那里走到 TabControl。
【讨论】:
我也是 WPF 的新手,但是循环搜索呢? 例如:
TextBox TB = new TextBox();
TabControl MyTabControl = new TabControl();
// ...
foreach (TabItem ti in MyTabControl.Items)
if (TB.Parent == ti)
{
// textbox is here!
MessageBox.Show(ti.ToString());
break;
}
【讨论】:
这是查找父控件的通用方法:How can I find WPF controls by name or type?
你可以这样称呼它:
TabItem owner = UIHelper.FindVisualParent<TabItem>(myTextBox);
【讨论】: