"Kproj.Forms.frmSwitch" 不能是 XAML 文件的根,因为它是使用 XAML 定义的
"Kproj.Forms.frmSwitch" cannot be the root of a XAML file because it was defined using XAML
我知道发布的其他问题似乎是同一问题,但 none 解决了我的问题。
我是 WPF 新手 我正在尝试将程序从 WinForms 转换为 WPF。我有一个主要的 window、"Kproj.Forms.frmLogin",它继承了一个基础 class、"Kproj.Forms.frmSwitch",它继承了 System.Windows.Window class。当我遇到上述问题时,我的初始 XAML 代码是:
<Control:frmSwitch x:Class="Kproj.Forms.frmLogin"
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:Control="clr-namespace:Kproj.Forms"
mc:Ignorable="d"
Title="LOG IN" Height="309" Width="678">
<Grid Height="271" Width="662">
... Content
</Grid>
</Control:frmSwitch>
在代码隐藏中有这些:
namespace Kproj.Forms
{
public partial class frmLogin : frmSwitch
{
}
}
namespace Kproj.Forms
{
public partial class frmSwitch : Window
{
}
}
经过进一步研究,我发现我需要将 frmSwitch 做成一个没有 XAML 的基础 class。因此,我以一般 Class 形式创建了 frmSwitch2,如下所示:
namespace Kproj.Forms
{
public class frmSwitch2 : Window
{
}
}
然后我相应地调整了主 window XAML:
<Control:frmSwitch2 x:Class="Kproj.Forms.frmLogin"
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:Control="clr-namespace:Kproj.Forms"
mc:Ignorable="d"
Title="LOG IN" Height="309" Width="678">
<Grid Height="271" Width="662">
... Content
</Grid>
</Control:frmSwitch2>
和主要的 window 代码隐藏到:
namespace Kproj.Forms
{
public partial class frmLogin : frmSwitch
{
}
}
现在,我丢失了原始错误消息,但我收到了一条消息,指出
"The name 'frmSwitch2' does not exist in the namespace 'clr-namespace:FITS.Forms'."
即使当我在主 window XAML 中键入 "Control:" 时它提示 "frmSwitch2",所以它知道它确实存在于命名空间中。有什么建议吗?
免责声明:我尝试尽可能地研究它,但我在 Whosebug 上找到的所有帖子都是这个问题,但都通过从 XAML\cs 部分 classes to solo code-behind full XAML-less class.
在研究了继承的实际需要之后,我了解到继承的唯一目的是为了变量,所以我能够让它工作,但只是将它们转换为静态全局变量并直接访问它们。毕竟我最终不需要继承。
如果其他任何人,最终了解更多 MVVM,确实遇到了此问题的修复程序,那么知道它会很高兴。虽然现在不需要了,但是学习还是不错的
我知道发布的其他问题似乎是同一问题,但 none 解决了我的问题。
我是 WPF 新手 我正在尝试将程序从 WinForms 转换为 WPF。我有一个主要的 window、"Kproj.Forms.frmLogin",它继承了一个基础 class、"Kproj.Forms.frmSwitch",它继承了 System.Windows.Window class。当我遇到上述问题时,我的初始 XAML 代码是:
<Control:frmSwitch x:Class="Kproj.Forms.frmLogin"
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:Control="clr-namespace:Kproj.Forms"
mc:Ignorable="d"
Title="LOG IN" Height="309" Width="678">
<Grid Height="271" Width="662">
... Content
</Grid>
</Control:frmSwitch>
在代码隐藏中有这些:
namespace Kproj.Forms
{
public partial class frmLogin : frmSwitch
{
}
}
namespace Kproj.Forms
{
public partial class frmSwitch : Window
{
}
}
经过进一步研究,我发现我需要将 frmSwitch 做成一个没有 XAML 的基础 class。因此,我以一般 Class 形式创建了 frmSwitch2,如下所示:
namespace Kproj.Forms
{
public class frmSwitch2 : Window
{
}
}
然后我相应地调整了主 window XAML:
<Control:frmSwitch2 x:Class="Kproj.Forms.frmLogin"
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:Control="clr-namespace:Kproj.Forms"
mc:Ignorable="d"
Title="LOG IN" Height="309" Width="678">
<Grid Height="271" Width="662">
... Content
</Grid>
</Control:frmSwitch2>
和主要的 window 代码隐藏到:
namespace Kproj.Forms
{
public partial class frmLogin : frmSwitch
{
}
}
现在,我丢失了原始错误消息,但我收到了一条消息,指出
"The name 'frmSwitch2' does not exist in the namespace 'clr-namespace:FITS.Forms'."
即使当我在主 window XAML 中键入 "Control:" 时它提示 "frmSwitch2",所以它知道它确实存在于命名空间中。有什么建议吗?
免责声明:我尝试尽可能地研究它,但我在 Whosebug 上找到的所有帖子都是这个问题,但都通过从 XAML\cs 部分 classes to solo code-behind full XAML-less class.
在研究了继承的实际需要之后,我了解到继承的唯一目的是为了变量,所以我能够让它工作,但只是将它们转换为静态全局变量并直接访问它们。毕竟我最终不需要继承。
如果其他任何人,最终了解更多 MVVM,确实遇到了此问题的修复程序,那么知道它会很高兴。虽然现在不需要了,但是学习还是不错的