WPF - Как найти вкладку, на которой находится элемент управления - PullRequest
2 голосов
/ 31 января 2011

Я очень новичок в WPF и не знаю, как это сделать.У меня есть текстовое поле в элементе вкладки на вкладке управления.Как программно (C #) определить, какой элемент вкладки является родителем этого текстового поля?Я также хотел бы определить, какой элемент управления вкладкой является родителем элемента вкладки.

Большое спасибо.

Ответы [ 4 ]

8 голосов
/ 31 января 2011

TabItem.Parent предоставит логический родительский элемент TabItem;который будет связан TabControl.Вы можете использовать тот же подход для любого элемента управления с TabItem.

((FrameworkElement)myTextBox.Parent).Parent;

Если элемент находится глубже в дереве и становится неизвестным по глубине, вам нужно начать приближаться к нему рекурсивным способом.

2 голосов
/ 31 января 2011

Вы можете использовать FrameworkElement.Parent для перехода по иерархии элемента управления в WPF. Это должно позволить вам (рекурсивно) подниматься, пока вы не найдете TabItem, а затем перейти к TabControl оттуда.

1 голос
/ 31 января 2011

Я тоже новичок в 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;
   }
0 голосов
/ 31 января 2011

Вот общий метод поиска родительских элементов управления: Как найти элементы управления WPF по имени или типу?

Вы можете назвать это так:

TabItem owner = UIHelper.FindVisualParent<TabItem>(myTextBox);
...