我是WPF编程模型的新手。我几乎没有疑问:
XAML中的页面标记(在XBAP应用程序中)是否为FrameworkElement
类型?
如果我有一个子元素让我们说一个页面内的框架。我将该框架元素传递给另一个程序集中的函数。现在我尝试从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>
答案 0 :(得分:1)
Page
继承自FrameworkElement
。Parent
属性向上运行树,直到它为空。然后,使用TemplatedParent
属性。您可以使用两者的组合向上走逻辑树。话虽这么说,WPF为这种情况提供了辅助方法。查看LogicalTreeHelper.GetParent
。答案 1 :(得分:0)