Как я могу найти какой-либо элемент управления в ItemTemplate TabControl? - PullRequest
1 голос
/ 27 мая 2010

У меня есть TabControl

 <TabControl 
    Name="myTabControl"
        IsSynchronizedWithCurrentItem="True" 
        ItemsSource="{Binding}">                            
               <TabControl.ItemTemplate>
                   <DataTemplate>
                           <DockPanel Width="120">
                                <Button Name="CloseScreen"/>
                                <ContentPresenter Content="{Binding Path=DisplayName}"/>
                          </DockPanel>
                   </DataTemplate>
               </TabControl.ItemTemplate>
 </TabControl>

Я хочу найти кнопку, которая находится в шаблоне ItemTemplate из кода.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Вы можете попробовать LogicalTreeHelper.FindLogicalNode .Например:

var button = LogicalTreeHelper.FindLogicalNode(myTabControl, "CloseScreen");

Но будьте осторожны: поскольку вы используете DataTemplate для своих элементов вкладок, вы получите несколько кнопок с именем CloseScreen, и FindLogicalNode, вероятно, вернет только первую.

Другой подход заключается в рекурсивном поиске логического дерева с использованием LogicalTreeHelper.GetChildren.Проблема, с которой вы можете столкнуться здесь, состоит в том, чтобы знать, когда остановиться.

0 голосов
/ 27 мая 2010

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

...