页面只能将框架作为父窗口,而不能将窗口作为窗口

时间:2019-01-03 07:50:23

标签: wpf xaml invalidoperationexception

继续这个问题:http://codevariation.blogspot.com/2018/03/html-table-design-with-dynamic-data.html,我正在制作WPF应用程序,我将在我的Page上添加一个Window元素。为此,我使用下一个代码:

<Window x:Class="Porject.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Project"
        xmlns:pages="clr-namespace:Project.Pages"
        mc:Ignorable="d"
        DataContext="{StaticResource appvm}"
        Title="Project" Height="450" Width="800">

    <Page Content="{Binding CurrentPage, Mode=TwoWay}" />
</Window>

但是,这给了我这个例外:

  

InvalidOperationExceptionPage只能将WindowFrame作为父级。

因此,您可以在第一个代码块中看到Page的父级是Window。如果将Page元素放在Frame (如下面的代码)中,则不会抛出异常。

<!-- Opening Window tag with all attributes -->
<Frame>
    <Frame.Content>
        <Page Content="{Binding CurrentPage, Mode=TwoWay}" />
    </Frame.Content>
</Frame>
<!-- Closing Window tag -->

因此,您可以看到Page元素只能以Frame作为父元素。但是为什么要说例外“……仅Window Frame作为父项” ?一定是这个:

  

InvalidOperationExceptionPage只能将 Window Frame作为父级。

1 个答案:

答案 0 :(得分:0)

找到它了,MainWindow上的代码必须是这样的:

<!-- Opening Window tag with all attributes -->
<Frame Content="{Binding CurrentPage, Mode=TwoWay}" />
<!-- Closing Window tag -->

这还将在窗口中显示StartScreenPage