0

我是 WPF 编程模型的新手。我有几个疑问:

  1. XAML(在 XBAP 应用程序中)中的 Page 标记是否属于 类型FrameworkElement

  2. 如果我有一个子元素,可以说页面内的框架。我在另一个程序集中的函数中传递了该框架元素。现在我尝试从 Frame 控件的 Parent 属性导航回 Page 我无法获得对 Page 的引用?有什么想法吗?


我在另一个程序集中使用的函数来获取子控件的父页面

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

</DataTrigger> </DataTemplate.Triggers>-->

        </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>

4

2 回答 2

1
  1. 是的,Page继承自FrameworkElement.
  2. 有时上树并不像简单地检查父级那样容易,尤其是在您使用模板的情况下。如果您使用的是模板,则需要使用该Parent属性向上爬树,直到它为空。然后,使用该TemplatedParent属性。您可以使用两者的组合来向上走逻辑树。话虽如此,WPF 为这种场景提供了帮助方法。退房LogicalTreeHelper.GetParent
于 2009-03-04T12:17:14.210 回答
-1
  1. 是的,就像 XAML 中的其他所有内容一样。去这里查看官方文档。
于 2009-03-04T12:16:41.357 回答