我创建了一些文件夹并整理了我的文件,以保持 MVVM 模式的整洁。模型文件夹、 View 文件夹和 ViewModel 文件夹。
它会在许多层面上产生命名空间问题。
首先是 InitializeComponent();
- 在当前上下文中不存在
第二个StartupUri=
- 找不到资源
我可以找到一些答案,但没有一个是完整的。 从基本情况看:
- 我创建了一个新项目 WPF c#(我们将其命名为 PROJECT)
- 我创建了 3 个新文件夹。
- 我将 MainView 移动到 View 文件夹。
PROJECT\app.xaml 中应该包含什么?
- x:Class=""
- StartupUri=""
PROJECT\View\MainWindow.xaml 中应该包含什么?
- x:Class=""
PROJECT\View\MainWindow.xaml\MainWindow.cs 中应该有什么?
- 命名空间
PROJECT\ViewModel\FooViewModel.cs 怎么样?
PROJECT\Model\FooModel.cs 怎么样?
为什么?
因此,可以完全回答类似的问题。非常感谢
最佳答案
App.xaml 是您的应用程序的起点。 x:Class 应始终定义实际类的完整命名空间。所以在您的示例中,App.xaml 如下所示:
x:Class="PROJECT.App"
StartupUri="Viewmodel/MainWindow.xaml"
Startup uri 定义所需第一页的相对路径。在您的情况下是 Viewmodel/MainWindow.xaml。
如果您将文件从一个位置移动到另一个位置,您应该检查命名空间并相应地进行调整。对于您的 MainWindow 会像这里一样:
using System.Windows;
namespace PROJECT.Viewmodel
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
- XAML
<Window x:Class="PROJECT.Viewmodel.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:PROJECT" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> </Grid> </Window>
请记住将代码隐藏 (.cs) 和 xaml 文件设置为指向相同的命名空间。祝你好运!
关于c# - Xaml WPF MVVM 命名空间和新项目文件夹,InitializeComponent(); StartupUri=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45437965/