我创建了一个简单的 MVVM,只有三个类 CashFlowView、CashFlowViewModel、CashFlowModel。
我使用基础架构的 9.1 XamDataPresenter(或 xamDataGrid)。
<igDP:XamDataPresenter Name="xamDataPresenter1" DataSource="{Binding Source={StaticResource CashFlowData}}">
<ObjectDataProvider x:Key="CashFlowData" ObjectType="{x:Type ViewModel:CashflowViewModel}" MethodName="GetCashFlows" />
在我的 ViewModel 中:
public ObservableCollection<CashflowModel> GetCashFlows()
{
return new ObservableCollection<CashflowModel>() { ... };
}
ViewModel 通过以下方式连接到 View:
this.DataContext = new CashflowViewModel();
只要我将网格连接到 ObjectDataProvider,它就可以正常运行。但我希望我可以只连接到我的 ViewModel 中的一个属性。
根据 Infragistics,我所要做的就是:
<igDP:XamDataGrid DataSource="{Binding Path=ViewModelCollection}"/>
但在这种情况下,我似乎需要绑定到另一个 ViewModel 的集合来表示我在网格中的行。这就是我感到困惑的地方。
我试过了,但它不起作用:
<igDP:XamDataPresenter Name="xamDataPresenter1" DataSource="{Binding Path=CashFlows}">
在 ViewModel 内部:
public ObservableCollection<CashflowDataGridViewModel> CashFlows
{
get
{
return new ObservableCollection<CashflowDataGridViewModel>();
}
}
但是如何创建我的第二个 ViewModel (CashflowDataGridViewModel) ?
我尝试在第二个 ViewModel 中添加这个属性:
public CashflowModel CashFlow
{
get
{
return new CashflowModel() {...};
}
}
但我在视图中显示的只是“现金流”列标题,没有实际 cashflowModel 类的任何底层标题。