저는 CashFlowView, CashFlowViewModel, CashFlowModel의 세 클래스만으로 간단한 MVVM을 만들었습니다.MVVM에서 ObjectDataProvider가 필요하지 않습니까?
나는 역동적 인 9.1 XamDataPresenter (또는 xamDataGrid)를 사용합니다. 내 뷰 모델 내부
<igDP:XamDataPresenter Name="xamDataPresenter1" DataSource="{Binding Source={StaticResource CashFlowData}}">
<ObjectDataProvider x:Key="CashFlowData" ObjectType="{x:Type ViewModel:CashflowViewModel}" MethodName="GetCashFlows" />
: 뷰 모델이가보기에 연결되어
public ObservableCollection<CashflowModel> GetCashFlows()
{
return new ObservableCollection<CashflowModel>() { ... };
}
:
만큼 내가 ObjectDataProvider 그것의 완벽 실행 벌금을 그리드 연결로this.DataContext = new CashflowViewModel();
. 하지만 대신 ViewModel 내의 속성에 연결할 수 있으면 좋겠다.
<igDP:XamDataGrid DataSource="{Binding Path=ViewModelCollection}"/>
그러나이 경우에는 내가 그리드 안에 내 행을 대표하는 또 다른 뷰 모델의 컬렉션에 바인딩해야 할 것 같다 : Infragistics의 내가 할 일은에 따르면
이있다. 그리고 내가 혼란스러워하는 곳. 나는이 시도하고 작업 나던 : 뷰 모델 내부<igDP:XamDataPresenter Name="xamDataPresenter1" DataSource="{Binding Path=CashFlows}">
:
public ObservableCollection<CashflowDataGridViewModel> CashFlows
{
get
{
return new ObservableCollection<CashflowDataGridViewModel>();
}
}
을하지만 어떻게 난 내 두 번째 뷰 모델 (CashflowDataGridViewModel)를 만들려면 어떻게해야합니까?
나는이 두 번째 뷰 모델 내에서이하게 proprty을 추가하는 시도 :public CashflowModel CashFlow
{
get
{
return new CashflowModel() {...};
}
}
를하지만 내보기에 표시 얻을 모두 실제 cashflowModel 클래스의 기본 헤더의 어떤없이 "현금 흐름"열 헤더입니다.
안녕하세요, Eric 님, 이미 다음과 같이 연결되어 있습니다.DataContext = new CashflowViewModel(); 두 번째 ViewModel (CashflowDataGridViewModel) 안에 하나의 속성이 있는데 그 속성을 볼 수 있습니다. 그러나 각 행에 대한 CashflowModel의 실제 내용은 아닙니다. 어쩌면 내가 이것을 분명히하기 위해 스크린 샷이 필요합니다 ... – Houman
방금 질문을 다시 읽고, 나는 당신이 무엇을 요구하는지 알고 있다고 생각합니다. CashFlowViewModel에서 ObservableCollection을 노출해야합니다. 여기서 FlowViewModel은 DataGrid의 한 행에 포함될 데이터를 나타 냅니까? 그 맞습니까? 그렇다면 FlowViewModel을 만드는 것이 매우 간단해야합니다. INotifyPropertyChanged 인터페이스를 구현하는 새 클래스를 만듭니다. 행의 각 항목에 대한 속성을 만들고 변경 내용이 PropertyChanged 이벤트를 트리거하는지 확인하십시오. –
감사합니다! :) 지금은 이해. 모델 자체에 알림을 추가하기를 원합니다. 하지만 INotifyPropertyChanged와 같은 인터페이스를 사용하여 모델을 다룰 것이므로 실수라고 생각합니다. 따라서 모델을 래핑하고 거기에 INotifyPropertyChanged 기능을 추가하는 두 번째 ViewModel을 갖는 것이 좋습니다. 내 가정이 맞습니까? – Houman