C# Can';t绑定ViewModelLocator
我为store ViewModels制作了一个课程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绑定到页面
内部类定位器
{
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);
}