ViewModelLocator.AutoWireViewModel - No DataContext for Main

本文关键字:for Main DataContext No AutoWireViewModel ViewModelLocator | 更新日期: 2023-09-27 18:32:39

MainWindow UI

<Window x:Class="PrismSanity.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:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock Text="{Binding MyName}"></TextBlock>

    </Grid>
</Window>

主窗口视图模型

public class MainWindowViewModel : BindableBase
    {
        private string _MyName = "John";
        public string MyName
        {
            get { return _MyName = "John"; }
            set { SetProperty(ref _MyName, value); }
        }

    }

我安装了SNOOP以查看发生了什么,但虚拟机未链接到视图。如果我对第二个视图做同样的事情,并使用

<ContectContainer>
<views:ViewA/>
</ContentContainer>

在主窗口中然后我得到ViewA和ViewAViewModel链接正常。谢谢你的关注。

ViewModelLocator.AutoWireViewModel - No DataContext for Main

Prism 仅支持UserControlWindow类。 AutoWireViewModelUserControl课上

我有同样的问题,我在代码隐藏中解决了这个绑定上下文的问题 - 部分使用 Unity。像这样:

public partial class ShellView : Window
{
    public ShellView(ShellViewModel viewModel)
    {
        this.InitializeComponent();
        // Set the ViewModel as this View's data context.
        this.DataContext = viewModel;
    }

当应用程序创建 ShellView 时(它是你的 PrismSanity.MainWindow),统一注入视图模型 ( ShellViewModel

这是很少的技术债务。