c# - Xaml WPF MVVM 命名空间和新项目文件夹,InitializeComponent(); StartupUri=

标签 c# wpf xaml mvvm namespaces

我创建了一些文件夹并整理了我的文件,以保持 MVVM 模式的整洁。模型文件夹、 View 文件夹和 ViewModel 文件夹。

它会在许多层面上产生命名空间问题。

首先是 InitializeComponent();

  • 在当前上下文中不存在

第二个StartupUri=

  • 找不到资源

我可以找到一些答案,但没有一个是完整的。 从基本情况看:

  1. 我创建了一个新项目 WPF c#(我们将其命名为 PROJECT)
  2. 我创建了 3 个新文件夹。
  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/

相关文章:

wpf - UserControl 内部控件的 ValidationRules

xaml - Windows Phone 7.1 中滚动查看器内的网格

wpf - 在 WPF 样式中设置嵌套元素的属性

c# - 如果声明的类型是动态对象,则声明的属性不会被序列化

c# - 使抽象方法具有覆盖的主体

javascript - Razor 里面的 javascript 键值声明?

c# - ELMAH 不从本地主机发送电子邮件

c# - 检测 WPF 中的系统语言更改

wpf - 带有复选框的 ListView

wpf - 如何为 UIElement.Margin 上的绑定(bind)设置 FallbackValue?