WPF应用程序中当前上下文不存在'InitializeComponent'名称

4

我已经查看了StackOverflow上所有类似的问题,但是没有一个答案解决了我的问题。我只是得到了标题中的错误。

这是我的MainVindow.xaml:

<Window x:Class="CodeFirstMVVM.App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:cm="clr-namespace:System.ComponentModel;assembly=System"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:vm="clr-namespace:CustomerOrder.App.ViewModel"
        xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator}, Path=CustomerView}"
        Title="MainWindow" Height="500" Width="900">
    <Grid>
        <Canvas>
            <TextBox Height="23" Canvas.Left="131" TextWrapping="Wrap"  Canvas.Top="51" Width="283" Name="txtName" Text="{Binding NameUI}"/>
            <DataGrid x:Name="maingrid" ItemsSource="{Binding Entities, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedEntity}" AutoGenerateColumns="True" Canvas.Left="10" Canvas.Top="265">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="200"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
            <DataGrid x:Name="ordergrid" ItemsSource="{Binding ElementName=maingrid, Path=SelectedItem.Orders}" AutoGenerateColumns="True" Canvas.Top="265" Canvas.Left="597">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Explanation}" Header="Orders" Width="200"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Canvas>

    </Grid>
</Window>

以下是我的App.xaml:

<Application x:Class="CustomerOrder.App.App" 
             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"
             StartupUri="MainWindow.xaml" 
             mc:Ignorable="d">
    <Application.Resources>
        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:CustomerOrder.App.ViewModel" />
    </Application.Resources>
</Application>

在 MainWindow.xaml.cs 文件中:
namespace CustomerOrder.App
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

你能告诉我如何修复这个问题吗?谢谢。


请发布您的 MainWindow.xaml.cs 代码。 - Yuliam Chandra
@YuliamChandra 我已经添加了,谢谢。 - jason
6
命名空间不同,这就是问题所在,“x:Class="CodeFirstMVVM.App.MainWindow"namespace CustomerOrder.App` 不一样。 - Yuliam Chandra
2
@YuliamChandra 那就是答案。你应该将其发布为答案,而不是评论。 - default
5个回答

13
修改 XAML 的命名空间即可修复该问题。
<Window x:Class="CustomerOrder.App.MainWindow"

4

在进行了以上所有检查并且所有命名空间匹配时,我已经多次遇到过这个错误。

修复它的方法很简单,只需要重新输入“X:Class”属性即可。然后VS似乎能够正确地解析它并建立适当的关联。

这种简单地重新输入VS抱怨的任何内容的技巧也适用于其他许多错误。

非常令人沮丧...


我不确定为什么需要这样做,但是这个解决方案也解决了我的问题。在我的情况下,命名空间已经正确,并且软件成功编译,但是Visual Studio仍然报告了这些错误。谢谢。 - user3308241

3
你的MainWindow类不在与xaml相同的命名空间中。 请将其修改为:
namespace CodeFirstMVVM.App
{ 
      /// <summary>
      /// Interaction logic for MainWindow.xaml 
      /// </summary> 
      public partial class MainWindow : Window 
     { 
            public MainWindow()
            { 
                  InitializeComponent(); 
             }
     } 
 }

0

在创建XAML文件时,App.Xaml文件应该将类名设为NameSpace.app,而其他窗口应该是NameSpace.WindowName。


0

我曾经尝试过排除和重新包含XAML及其相关文件。

对我来说,关闭并重新打开Visual Studio是有效的解决方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接