您的 ViewModel 将具有填充模型对象的属性。在这里您将分配它们,以便视图能够显示数据。
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");
}
}
}
View 将包含显示数据的对象,可以是 DataGrid、ComboBox 等。您可以使用 ItemTemplates 自定义数据的显示方式,但关键是bind
您的数据到控件。这可以允许数据以仅 ViewModel 到 View (OneWay) 或 View 到 ViewModel (OneWayToSource) 或两者 (TwoWay) 的方向模式流动。因此,当用户更改所选索引时,数据将流回 ViewModel,因为它在下面为 TwoWay 设置。这里的 ItemsSource 设置为 OneWay,因此只有 ViewModel 可以为 View 更改它。
<DataGrid ItemsSource="{Binding Path=ParentModel.Items, Mode=OneWay}"
SelectedIndex="{Binding Path=SelectedItemIndex, Mode=TwoWay}" />
如果 ViewModel 需要与 BusinessLogic 交互,只需传递 Data。如果单独的 ViewModel 需要这些信息,您将需要使用框架中可用的概念,例如。EventAggregator(Prism),用于传递数据,因为它们彼此不了解。
MVVM 的核心概念是模型和 WPF 控件的属性的绑定,就像这样。我认为您需要阅读更多内容以充分利用其功能和设计。一些非常有用的问题/答案可以在 StackOverflow 上找到,MSDN 有几个很好的教程等。