Найти элемент в DataTemplate, примененный к TabItem
У меня возникла проблема при попытке найти элемент, объявленный в DataTemplate, который после был применен как ContentTemplate к объекту TabItem. Я видел, что уже есть некоторые решения в отношении этой проблемы, но на самом деле никто из них не работает в моем случае, и я хотел бы понять, почему (очевидно, я ошибаюсь в некоторых местах) Вот пример кода:
Этот код программно применяется к данному объекту TabItem следующим образом:
this.ContentTemplate = FindResource("TabItemDataTemplate") as DataTemplate;
После того, как мне нужен доступ к элементу ListView, объявленному в DataTemplate, я выполняю коды, найденные в Интернете, а также на этом сайте. Вот краткий пример:
/* Getting the ContentPresenter of myListBoxItem*/
ContentPresenter myContentPresenter =
FindVisualChild(this);
// this.GetVisualChild(0)
/* Finding textBlock from the DataTemplate that is set on that ContentPresenter*/
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
ListView repoListView = (ListView)myDataTemplate.FindName("repoView",
myContentPresenter);
Проблема 1: в этом случаеContentTemplate ContentPresenter имеет значение Null, поэтому выполнение кода прекращается. Prolem2: Хорошо, я думаю, может быть, мне нужно перейти непосредственно к содержимому броска TabItem, чтобы код стал более или менее:
/* Getting the ContentPresenter of myListBoxItem*/
ContentPresenter myContentPresenter =
FindVisualChild(this);
// this.GetVisualChild(0)
/* Finding textBlock from the DataTemplate that is set on that ContentPresenter*/
DataTemplate myDataTemplate = this.ContentTemplate;
ListView repoListView = (ListView)myDataTemplate.FindName("repoView",
myContentPresenter);
этот является объектом TabItem. Но странные вещи, что ContentTemplateэтот полностью отличается от назначенного выше. Я'Я уверен, что я где-то пропустил, вы можете помочь мне разобраться в проблеме? Спасибо.