Wpf使用Mvvmlight小问题
用mvvmlight时,我有多个view和多个viewmodel时,怎样让view找到各自的viewmodel呢?
[解决办法]
有点纠结!反射实现!
[解决办法]
MVVMlight框架是通过Command保持不同View页面之间通讯。
而View和ViewModel是通过资源绑定实现保持一致的。
例如:
在View页面定义TheViewModel,然后进行DataContext绑定使用ViewModel
<UserControl x:Class="MVVM.Client.Views.GameView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:data="clr-namespace:MVVM.Client.Data;assembly=MVVM.Client.Data"> <UserControl.Resources> <data:GamesViewModel x:Key="TheViewModel" /> </UserControl.Resources> <Grid x:Name="LayoutRoot" DataContext="{Binding Path=Games, Source={StaticResource TheViewModel}}"> ... </Grid></UserControl>
[解决办法]
View和ViewModel的对应于mvvmlight无关,下边的代码是实际项目中的片断,就是关于View和ViewModel的对应,希望对你有帮助。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="clr-namespace:Appl.ViewModel.Utility;assembly=App.ViewModel" xmlns:vw_DataEntry="clr-namespace:Presentation.Server.Views.Workspace.DataEntry" xmlns:vw_Security="clr-namespace:Presentation.Server.Views.Navigation" > <DataTemplate DataType="{x:Type vm:OperatorVM}"> <vw_DataEntry:OperatorView /> </DataTemplate> <DataTemplate DataType="{x:Type vm:ProductViewModel}"> <vw_DataEntry:ProductView /> </DataTemplate> <DataTemplate DataType="{x:Type vm:NavGroupVM}"> <vw_DataEntry:AllGroupsView /> </DataTemplate> ...</ResourceDictionary>