Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t绑定ViewModelLocator_C#_Wpf_Xaml_Data Binding - Fatal编程技术网

C# Can';t绑定ViewModelLocator

C# Can';t绑定ViewModelLocator,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,我为store ViewModels制作了一个课程 内部类定位器 { public MainViewModel MainViewModel{get;}=new MainViewModel(); } 并将其添加到应用程序资源中 然后将其定位器绑定到主窗口 它起作用了 当我向页面添加绑定(DataContext)时。它引发异常(System.Windows.Markup.XamlParseException,找不到名为“Locator”的资源。) 如何将DataContext绑定到页面

我为store ViewModels制作了一个课程

内部类定位器
{
public MainViewModel MainViewModel{get;}=new MainViewModel();
}
并将其添加到应用程序资源中


然后将其定位器绑定到主窗口


它起作用了

当我向页面添加绑定(DataContext)时。它引发异常(
System.Windows.Markup.XamlParseException
找不到名为“Locator”的资源。



如何将DataContext绑定到页面?

App.xaml
定位器实例的声明中,不需要
x:Name
x:Key
就足够了

视图模型不应创建
页面
对象。尝试返回一个
Uri
,并绑定到
源属性:

<Window x:Class="App.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"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator}, Path=MainViewModel}"
        Title="MainWindow" MinHeight="350" MinWidth="525">
    <Grid>
        <Frame Source="{Binding Page}" />
    </Grid>
</Window>

感谢您提出这个问题,但它并没有解决问题。这可能是因为我没有使用DI,只是通过构造函数创建ViewModel吗?可能相关:
public class MainViewModel
{
    public Uri Page { get; } = new Uri("Page1.xaml", UriKind.RelativeOrAbsolute);
}