【问题标题】:WPF using view inside mainwindowWPF在主窗口内使用视图
【发布时间】:2015-10-09 13:48:14
【问题描述】:

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

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'.

【问题讨论】:

  • 你不能在另一个窗口中嵌套一个窗口。你应该只拿网格,没有它周围的窗口
  • 如果你需要在另一个文件中创建一个 UserControl 来代替
  • 您需要创建单独的用户控件并在主窗口中使用。
  • 感谢@Dominik,答案是用户控件而不是窗口。
  • 把第二个窗口改成用户控件,就可以了

标签: c# wpf xaml mvvm prism


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    将第二个窗口更改为用户控件。然后它将起作用

    【讨论】:

      【解决方案3】:

      您也许可以将其嵌入框架中:

      <Frame  Source="Login.xaml" />
      

      而不是

      <views:Login></views:Login>
      

      您可能需要将 Login.xaml 窗口设为页面。

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

      【讨论】:

      • 是的。当我们按窗口导航时,框架也是更好的选择
      猜你喜欢
      • 2016-10-24
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多