您的ViewModel将具有已填充模型对象的属性。在这里您将分配它们,以便View能够显示数据。
public ParentModel
{
get { return parentModel; }
private set
{
if (parentModel != value)
{
parentModel = value;
RaisePropertyChanged("ParentModel");
}
}
}
public int SelectedItemIndex
{
get { return selectedItemIndex; }
set
{
if (selectedItemIndex != value)
{
selectedItemIndex = value;
RaisePropertyChanged("SelectedItemIndex");
}
}
}
的视图将包含显示数据的对象,无论是DataGrid中,组合框等,您可以使用的ItemTemplate自定义数据是如何显示的,但关键是你的数据bind
的控制。这可以允许数据在只有ViewModel的方向模式下查看(OneWay)或View to ViewModel(OneWayToSource)或两者(TwoWay)。因此,当用户更改选定的索引时,数据将返回到ViewModel,因为它为以下的TwoWay设置。这里的ItemsSource被设置为OneWay,所以只有ViewModel可以改变View。
<DataGrid ItemsSource="{Binding Path=ParentModel.Items, Mode=OneWay}"
SelectedIndex="{Binding Path=SelectedItemIndex, Mode=TwoWay}" />
如果ViewModels需要与BusinessLogic交互,只需传递数据。如果一个独立的ViewModel需要这些信息,则需要使用框架中可用的概念,例如。 EventAggregator(Prism)可以传递数据,因为它们不会彼此了解。
MVVM的核心概念是模型和WPF控件属性的绑定。我想你会想更多地阅读它来充分利用功率和设计。一些非常有用的问题/答案可以在StackOverflow上找到,MSDN有几个很好的教程等。
请与我分享好的教程链接。我发现了很多文章,但是我找不到绑定到Datagrid的教程 – StepUp
@StepUp [This](http://karlshifflett.wordpress.com/2010/11/07/in-the-box-ndash-mvvm-培训/)是一个非常全面的开始,你可以遵循,当你有问题时,你将利用SO/MSDN来了解更多关于细节的信息。 – bland