【问题标题】:WPF FrameworkElementWPF 框架元素
【发布时间】:2009-03-04 12:05:32
【问题描述】:

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

  1. XAML 中的页面标记(在 XBAP 应用程序中)是否属于 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

-->

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

【问题讨论】:

    标签: c# .net wpf frameworkelement


    【解决方案1】:
    1. 是的,Page 继承自 FrameworkElement
    2. 有时上树并不像简单地检查父级那样简单,尤其是在您使用模板时。如果您正在使用模板,则需要使用 Parent 属性向上遍历树,直到它为空。然后,使用TemplatedParent 属性。您可以使用两者的组合来向上走逻辑树。话虽如此,WPF 为这种场景提供了帮助方法。查看LogicalTreeHelper.GetParent

    【讨论】:

    • 感谢您的回复。页面 getTopParent(FrameworkElement f) { FrameworkElement ct = f; while (true) { if (ct is Page) { break; } ct = (FrameworkElement)ct.Parent; } 返回 ct 作为 Page; }
    • 谢谢,我刚刚检查过了,我认为我是在同一个程序集中传递它还是在另一个程序集中传递它并不重要。是的,我的 Page 元素包含控件和数据模板吗?即使我的页面中有模板,有什么方法可以获取父页面。
    【解决方案2】:
    1. 是的,就像 XAML 中的所有其他内容一样。前往here 获取官方文档。

    【讨论】:

    • 这不是答案。
    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 2011-09-21
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多