WPF在主窗口内使用视图

本文关键字:视图 窗口 WPF | 更新日期: 2023-09-27 18:16:53

我试图在我的主窗口内使用视图。所以我在项目的视图文件夹中创建了视图,并尝试在主窗口中使用它。但我得到了运行时错误。有人能帮忙吗?

XAML主窗口

<Window x:Class="DataRetrieval.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:prism="http://www.codeplex.com/prism"
         xmlns:views="clr-namespace:DataRetrieval.Views"
        Title="MainWindow" Height="350" Width="525">
    <TabControl Name="TabControl1" >
        <TabControl.ItemContainerStyle>
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="Visibility" Value="Collapsed"/>
            </Style>
        </TabControl.ItemContainerStyle>
        <TabItem Header="General">
            <views:Login></views:Login>
        </TabItem>
    </TabControl>
</Window>
XAML视图:

<Window x:Class="DataRetrieval.Views.Login"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Login" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>

        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0">
            <Label Content="User Name:" Width="Auto"/>
            <Label Content="Password:" Width="Auto"/>
        </StackPanel>
        <StackPanel Grid.Column="1">
            <TextBox Grid.Column="1" Name="Username"  Text="" VerticalAlignment="Top" Width="Auto"/>
            <PasswordBox Grid.Column="1" Name="Password" VerticalAlignment="Top" Width="Auto"/>
        </StackPanel>
    </Grid>
</Window>

但是当我运行应用程序时,我在主窗口的xaml代码上得到一个运行时错误:

A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
Additional information: 'Set property 'System.Windows.Controls.ContentControl.Content' threw an exception.' Line number '14' and line position '14'.

WPF在主窗口内使用视图

不能将一个Window嵌套到另一个Window中。您可以将Grid直接放在Window中,也可以创建UserControl

将第二个窗口更改为用户控件。然后就可以了

你可以将它嵌入到一个框架中:

<Frame  Source="Login.xaml" />

代替

<views:Login></views:Login>

您可能需要进行登录。

我相信有更好的方法来实现它,但它有效=)