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}"/>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)