C# 将WPF xaml绑定到ViewModel而不构造它

C# 将WPF xaml绑定到ViewModel而不构造它,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我的WPF应用程序未使用app.xaml。我正在使用MVVM,并分别构建视图和视图模型。然后,我将ViewModel传递给视图构造函数,并在那里设置datacontext 我希望VisualStudio能够理解viewmodel在上下文单击等方面的属性,但不能让它在设置视图时构造自己的DataContext 当我这样做时,它会强制我为MainViewModel拥有一个默认构造函数,然后在我构造视图时调用该VM构造函数 <Window x:Class="Kraken.CopFeed.Wind

我的WPF应用程序未使用app.xaml。我正在使用MVVM,并分别构建视图和视图模型。然后,我将ViewModel传递给视图构造函数,并在那里设置datacontext

我希望VisualStudio能够理解viewmodel在上下文单击等方面的属性,但不能让它在设置视图时构造自己的DataContext

当我这样做时,它会强制我为MainViewModel拥有一个默认构造函数,然后在我构造视图时调用该VM构造函数

<Window x:Class="Kraken.CopFeed.Windows.MainFeedView"
        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:Windows="clr-namespace:MyProgram.MainApp.WpfWindows"
        mc:Ignorable="d"
        Title="Main App" Height="321.557" Width="652.922">

    <Window.DataContext>
        <Windows:MainViewModel />
    </Window.DataContext>


我如何保持现有的分别构建V和VM的实现,但让Visual STudio中的XAML编辑器知道我的ViewModel(最终)将被设置为数据上下文?

我认为您应该能够使用
d:DesignInstance
实现这一点,如中所示


我认为您应该能够使用
d:DesignInstance
完成这项工作,如中所示



我想有人说你可以用
d:DesignInstance
Hot该死,DesignInstance就是这么做的。你能补充一下答案吗?我想有人说你可以用
d:DesignInstance
Hot该死,DesignInstance就是这么做的。你能补充一下答案吗?是否有必要创建DesignTimeCreatable?我没有设置它,它似乎工作得很好。我引用的是一个具体的视图模型,而不是一个界面。找不到关于IsDesignTimeCreatable的确切信息。我只是把它包括在内,因为粘贴整个东西比测试它更容易。如果没有它对您来说效果很好的话,我会取消它。
isdesigntimecreateable
对于intellisense来说不是必需的,只有当您想在图形设计器中查看数据时。isdesigntimecreateable是必需的吗?我没有设置它,它似乎工作得很好。我引用的是一个具体的视图模型,而不是一个界面。找不到关于IsDesignTimeCreatable的确切信息。我只是把它包括在内,因为粘贴整个东西比测试它更容易。如果没有它对您来说效果很好的话,我会取消它。
IsDesignTimeCreatable
对于intellisense来说不是必需的,只有当您希望在图形设计器中查看数据时。
<Window
    ...etc...
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    mc:Ignorable="d"

    d:DataContext="{d:DesignInstance Type=MyViewModelNamespace:MyViewModel}"
    >