2013-09-23 1 views
0

기존 프로그램을 약간 변경해야합니다.탭 컨트롤의 여러 탭에서 데이터 저장

변경 사항 중 하나는 '저장'버튼을 구현하는 것입니다. 클릭하면 각 탭을 반복하고 내용을 데이터베이스에 저장하지만 데이터에 올바르게 액세스하는 방법을 알 수 없습니다.

추가되는 탭은 별도의보기이며 각 탭마다 고유 한보기 모델이 있습니다. tabcontrol이 포함 된 기본보기에도 자체보기 모델이 있습니다.

tabcontrol에 액세스하여 각 탭을 반복하고 순서대로 데이터를 저장하는 방법은 무엇입니까? (이 시점에서 코드를 표시하는 것이 관련이 있는지 확실하지 않지만 필요한 경우 요청하십시오.)

답변

0

모든 탭이 변경 사항 저장을 지원한다고 가정하면 뷰 모델을 만듭니다. 탭보기 모델 상단 :

// this is the base class for tab view models 
public class DocumentViewModel 
{ 
    public void SaveChanges() {} 
} 

// this is the view model for tab container 
public class EditorViewModel 
{ 
    private SaveChanges() 
    { 
     foreach (var document in OpenedDocuments) 
     { 
      document.SaveChanges(); 
     }   
    } 

    public EditorViewModel() 
    { 
     SaveCommand = new RelayCommand(SaveChanges); 
    } 

    // this is your tabs 
    public ObservableCollection<DocumentViewModel> OpenedDocuments { get; private set; } 

    public ICommand SaveChangesCommand { get; private set; } 
} 
0

제대로 이해했다면 viewmodel에서 모든 데이터에 액세스 할 수 있으므로 tabcontrol의 탭을 반복 할 필요가 없습니다. '저장'버튼은 각 탭 viewmodel의 데이터를 수집하는 명령에 바인딩해야합니다.