使用WPF打开新窗口

时间:2019-03-07 19:54:48

标签: c# wpf

我正在尝试通过主窗口上的操作打开一个新窗口。

我有一个主窗口布局MainWindow.axml

<Window x:Name="Capacity_Restrictions" x:Class="PayloadRestrictions.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:PayloadRestrictions"
        mc:Ignorable="d"
        Title="Capacity Restrictions" Height="551.677" Width="879.614">
        ...

</Window>

然后是我要打开EditTextWindow.xaml的窗口:

<Window x:Name="Capacity_Restrictions" x:Class="PayloadRestrictions.EditTextWindow"
        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:PayloadRestrictions"
        mc:Ignorable="d"
        Title="Editing" Height="100" Width="100">
        ...   
</Window>

然后在我的MainWindow.xaml.cs中,我拥有:

namespace PayloadRestrictions
{
    public partial class EditTextWindow : Window
    {
        public EditTextWindow()
        {
            InitializeComponent();

        }
    }

    public partial class MainWindow : Window

    {
        public MainWindow()
        {
            InitializeComponent();

            void Row_DoubleClick(object sender, MouseButtonEventArgs e)
            {
                DataGridRow row = sender as DataGridRow;
                // Some operations with this row
                var window = new EditTextWindow();
                window.Show();
            }
            ...
        }
     }

每次我尝试构建项目时,在InitializeComponent();部分类的EditTextWindow行上都会出现错误:

The name 'InitializeComponent' does not exist in the current context PayloadRestrictions

对我在这里做错的任何建议吗?

1 个答案:

答案 0 :(得分:0)

至少一个问题是,两个窗口在您的xaml文件中具有相同的名称。

解决方案是按照Andy的指示将它们分解为单独的文件。然后,您可以启动子窗口,例如:

EditTextWindow window = new EditTextWindow();
window.Show();