WPF FrameworkElement - PullRequest
       7

WPF FrameworkElement

0 голосов
/ 04 марта 2009

Я новичок в модели программирования WPF. У меня есть несколько запросов:

  1. Имеет ли тег Page в XAML (в приложении XBAP) тип FrameworkElement?

  2. если у меня есть дочерний элемент, скажем, Frame внутри страницы. Я передаю этот элемент кадра в функцию в другой сборке. Теперь я пытаюсь вернуться обратно к странице из свойства Parent элемента управления Frame, я не могу получить ссылку на страницу? Есть мысли?


Функция, которую я использую в другой сборке для получения родительской страницы дочернего элемента управления

Page getTopParent(FrameworkElement f) 
{ 
    FrameworkElement ct = f; 

    while (true) 
    { 
        if (ct is Page) 
        { 
            break; 
        } 

        ct = (FrameworkElement)
        ct.Parent; 
    } 
    return ct as Page; 
}

Please find example XAML

->

        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                <StackPanel HorizontalAlignment="Left">
                    <Frame Name="tabContent" Height="520" Width="820" local:WebBrowserBehavior.Source="{Binding Path=CurrentPage}" ContentRendered="tabItem_contentRendered"/>
                </StackPanel>
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl>
    <StackPanel Orientation="Horizontal" Name="taskBar" Height="34" VerticalAlignment="Bottom">
        <Button Height="23" Name="helpButton" Width="43" Content="Help" Click="helpButton_Click"/>
    </StackPanel>
</StackPanel>

Ответы [ 2 ]

1 голос
/ 04 марта 2009
  1. Да, Page наследуется от FrameworkElement.
  2. Иногда подняться по дереву не так просто, как просто проверить родительский элемент, особенно если вы используете шаблоны. Если вы используете шаблоны, вам нужно перейти вверх по дереву, используя свойство Parent, пока оно не станет нулевым. Затем используйте свойство TemplatedParent. Вы можете пройти по логическому дереву, используя комбинацию обоих. При этом WPF предоставляет вспомогательные методы для этого самого сценария. Выезд LogicalTreeHelper.GetParent.
0 голосов
/ 04 марта 2009
  1. Да, как и все в XAML. Перейдите здесь для официальной документации.
...