3 回答
TA贡献2016条经验 获得超9个赞
我有一个视图模型定位器类。每个属性都将是我将在视图上分配的视图模型的实例。我可以检查代码是否在设计模式下运行或不使用DesignerProperties.GetIsInDesignMode。这使我可以在设计时使用模拟模型,并在运行应用程序时使用真实对象。
public class ViewModelLocator
{
private DependencyObject dummy = new DependencyObject();
public IMainViewModel MainViewModel
{
get
{
if (IsInDesignMode())
{
return new MockMainViewModel();
}
return MyIoC.Container.GetExportedValue<IMainViewModel>();
}
}
// returns true if editing .xaml file in VS for example
private bool IsInDesignMode()
{
return DesignerProperties.GetIsInDesignMode(dummy);
}
}
要使用它,我可以将定位器添加到App.xaml资源中:
xmlns:core="clr-namespace:MyViewModelLocatorNamespace"
<Application.Resources>
<core:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
然后将您的视图(例如:MainView.xaml)连接到您的视图模型:
<Window ...
DataContext="{Binding Path=MainViewModel, Source={StaticResource ViewModelLocator}}">
- 3 回答
- 0 关注
- 1069 浏览
添加回答
举报