2010-02-17 4 views
2

У меня есть FrameworkElement (на самом деле ToggleButton), который имеет в своем содержании Popup.WPF - FrameworkElement - Перечислить все подделки?

я получить доступ к нему, как это:

ToggleButton button = (ToggleButton)sender; 
Popup popup = (Popup)button.FindName("popSelectIteration"); 

Обычно это работает отлично. Но иногда popup имеет значение null.

Я пытаюсь найти способ отладить это. Есть ли способ перечислить все «вещи», которые может найти FindName?


Как фон, вот как мой всплывающее окно определяется в ToggleButton:

<ToggleButton Grid.Column="1" HorizontalAlignment="Right" Margin="0,2,0,2" Checked="btnFindIterationChecked"> 
<Grid> 
    <Popup PlacementTarget="{Binding ElementName=chkIteration}" Name="popSelectIteration" Closed="popSelectIteration_Closed" 
    AllowsTransparency="True" StaysOpen="False" PopupAnimation="Fade"> 
     <Border BorderBrush="#FF000000" Background="LightBlue" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Padding="5"> 
     <Grid> 
      <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="300"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
      </Grid.RowDefinitions> 
      <TextBlock Foreground="Black" >Select Destination:</TextBlock> 
      <ScrollViewer Grid.Row="1" > 
      <TreeView ItemsSource="{Binding IterationTree}" SelectedItemChanged="TreeView_SelectedItemChanged"> 
       <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
        <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding PathEnd}" /> 
        </StackPanel> 
       </HierarchicalDataTemplate> 
       </TreeView.ItemTemplate> 
      </TreeView> 
      </ScrollViewer> 
      <Button Grid.Row="2" Background="LightBlue" Content="Clear Selection" Click="btnClear_Click"/> 
     </Grid> 
     </Border> 
    </Popup> 
    </Grid> 
</ToggleButton> 

ответ

1

Попробуйте Snoop. Это отличная утилита для отладки WPF для всего, что касается визуального дерева.

Редактировать: Ваша конкретная проблема, похоже, связана с синхронизацией. Я думаю, что дерево еще не полностью сконструировано, и вы пытаетесь получить доступ к дочернему элементу, хотя он не создан. Подождите, пока верхний элемент не получит событие «Загружено».

Смежные вопросы