MVVMLight 中一个 View 对应多的 ViewModel,和一个 View 对应 一个ViewModel

在MvvmLight中View和ViewModel的绑定

View Model

public class Test1ViewModel : ViewModelBase {
	public List<string> Name = new  List<string> (){"amos","kai","name"};
	...
}
public class Test2ViewModel : ViewModelBase {
	public List<string> Name1 = new  List<string> (){"amos1","kai1","name1"};
	...
}
public class Test3ViewModel : ViewModelBase {
	public List<string> Name2 = new  List<string> (){"amos2","kai2","name2"};
	...
}

app.xml中

<Application.Resources>
    <ResourceDictionary>
        <vms:ViewModelLocator x:Key="Locator" />
    </ResourceDictionary>
</Application.Resources>

ViewModelLocator中配置ViewModel

public class ViewModelLocator{
	public ViewModelLocator(){
		ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
		SimpleIoc.Default.Register<Test1ViewModel>();
		SimpleIoc.Default.Register<Test2ViewModel>();
		SimpleIoc.Default.Register<Test3ViewModel>();
	}

	public Test1ViewModel  Test1 {
		get{
			return ServiceLocator.Current.GetInstance<Test1ViewModel>();
		}
	}
	public Test2ViewModel  Test2 {
		get{
			return ServiceLocator.Current.GetInstance<Test2ViewModel>();
		}
	}
	public Test3ViewModel  Test3 {
		get{
			return ServiceLocator.Current.GetInstance<Test3ViewModel>();
		}
	}
}
<Window
    x:Class="Wisdy.DSP.Client.FormulaContentEdit"
    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:local="clr-namespace:Wisdy.DSP.Client"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    DataContext="{Binding Source={StaticResource Locator}, Path=OffLine}"
    mc:Ignorable="d">

1.一个ViewModel对应一个View

DataContext="{Binding Source={StaticResource Locator}, Path=Test1}"

当配置一个viewmodel的时候,直接配置Path=Test1,就可以在xaml中绑定viewmodel中的数据了。
如:

 <ListBox ItemsSource="{Binding Name}"/>

1.多个ViewModel对应一个View

DataContext="{Binding Source={StaticResource Locator}}"

当配置多个viewmodel的时候,就不配置Path,但是在xaml中绑定viewmodel中的数据需要调用。

如:

 <ListBox ItemsSource="{Binding Test1.Name}"/>
 <ListBox ItemsSource="{Binding Test2.Name}"/>
 <ListBox ItemsSource="{Binding Test3.Name}"/>
posted @   x_amos  阅读(1442)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示