我試圖通過聲明它爲App.xaml中的資源來使用ViewModelLocator。它是一種非常簡單的類如下:找不到名爲'ViewModelLocator'異常的資源
public class ViewModelLocator
{
public ShellViewModel ShellPage
{
get
{
return new ShellViewModel();
}
}
}
App.xaml文件是如下:
<Application x:Class="SomeNamespace.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:SomeNamespace.ViewModels">
<Application.Resources>
<vm:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
</Application>
App.xaml.cs是如下:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var view = new ShellView();
Current.MainWindow = view;
Current.MainWindow.Show();
}
}
ShellView.xaml是a如下:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SomeNamespace.ShellView"
Title="MainWindow"
Height="350"
Width="525"
ResizeMode="NoResize"
MinWidth="700"
MinHeight="700"
DataContext="{Binding ShellPage, Source={StaticResource ViewModelLocator}}"
>
<Grid>
<TextBlock Text="{Binding Title}"></TextBlock>
</Grid>
</Window>
我可以看到正確的山雀在Visual Studio設計器中,但是當我運行應用程序時,得到XamlParseException: '在'System.Windows.StaticResourceExtension'上提供值拋出異常。'行號「11」和行位置「9」。
設置InnerException有{ 「無法找到名爲 'ViewModelLocator' 資源。資源名稱是區分大小寫的。」}
我這麼想嗎?
+1因爲文檔是可怕的OnstartUp事件添加視圖MVVM-Light中的/ ViewModel。 – DanteTheEgregore
@ZachSmith在這裏,我只是使用我自己的簡單ViewModelLocator類,沒有從MVVM燈。 – user2788792
我意識到了。對於那個很抱歉。 – DanteTheEgregore