У меня есть TabControl. Я пытаюсь использовать:
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject rootObject) where T : DependencyObject
{
if (rootObject != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(rootObject); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(rootObject, i);
if (child != null && child is T)
yield return (T)child;
foreach (T childOfChild in FindVisualChildren<T>(child))
yield return childOfChild;
}
}
}
, чтобы найти все текстовые поля из выбранного TabItem.
Я делаю это, потому что у меня есть список с текстом для каждого TextBoxes в TabItem. Когда я изменяю TabItem, я хочу сохранить изменения для последнего TabItem и перезагрузить текст для выбранного TabItem.
Я попытался использовать SelectionChanged в TabControl, но он не работает хорошо, а FindVisualChildren не возвращает никаких текстовых полей. Похоже, это не было инициализировать. Если я запускаю это в Задаче с дилером, ничего не меняется.
Этот метод работает без проблем, когда назначается отдельной кнопке. Но я бы хотел, чтобы это происходило автоматически.
Xaml покажет мне, есть ли событие <EventSetter Event="Initialized" Handler="TabItem_Initialized"/>
, но оно выбрасывает Событие Initialized не является RoutedEvent.
Как определить, что TabItem будет изменено раньше , а новый элемент вкладки инициализирован?