1.创建 ViewModelLocator 类
右键点击 ViewModel 文件夹,选择 添加 > 类,命名为 ViewModelLocator.cs。
在 ViewModelLocator.cs 文件中,添加以下代码:
using CommonServiceLocator;
using GalaSoft.MvvmLight.Ioc;
namespace VideoWatermark_Premium.ViewModel
{
public class ViewModelLocator
{
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
// Register ViewModels
SimpleIoc.Default.Register<MainWindowViewModel>();
}
public MainWindowViewModel MainWindowViewModel
{
get { return ServiceLocator.Current.GetInstance<MainWindowViewModel>(); }
}
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}
}
2.修改 App.xaml 文件
打开 App.xaml 文件。
修改 App.xaml 文件,添加 ViewModelLocator 资源:
<Application x:Class="VideoWatermark_Premium.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:VideoWatermark_Premium.ViewModel"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- HandyControl 主题-->
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- ViewModelLocator -->
<vm:ViewModelLocator x:Key="Locator" />
</ResourceDictionary>
</Application.Resources>
</Application>
3.设置 MainWindow 的 DataContext
打开 MainWindow.xaml 文件。
设置 DataContext,使其绑定到 ViewModelLocator 的 MainWindowViewModel 属性:
<Window x:Class="VideoWatermark_Premium.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding Source={StaticResource Locator}, Path=MainWindowViewModel}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock Text="{Binding WelcomeMessage}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="24"/>
</Grid>
</Window>