2009-08-14 5 views
1

Silverlight 페이지에 바인딩 된 viewmodel에 노출 된 IEditableObject 인터페이스를 구현하는 개체가 있습니다.Silverlight에서 IEditableObject 사용

어떻게 BeginEdit, CancelEdit 및 EndEdit 메서드를 호출합니까? 페이지에이 인터페이스를 구현하는 객체 만 어떻게 제한 할 수 있습니까?

DataGrid 또는 DataForm 컨트롤을 사용하고 있지 않습니다. Label, TextBox 및 DescriptionViewer 컨트롤을 사용하여 편집 할 데이터를 표시하고 있습니다. (A CollectionViewSource의 예를 들어) 현재 항목이 변경 될 때마다

:

답변

6

나는이 오래된 스레드 알고 (하지만 향후 사용을 위해 ...에 대한)

나는이 방법을 수행됩니다

void View_CurrentChanged(object sender, EventArgs e) 
     { 
      if (culturesView.Source != null) 
      { 
       ((IEditableObject)SelectedRecord).BeginEdit(); 
       RaisePropertyChanged("SelectedRecord"); 

      } 
     } 

내가 (현재 항목)를 저장할 때마다 나는이 작업을 수행합니다

private void Save() 
{ 
((IEditableObject)SelectedRecord).EndEdit(); 
//do the actual saving to the dbms here .... 

} 

내가 (현재 변경)을 취소하고 싶을 때마다 :

private void Cancel() 
{    
((IEditableObject)SelectedRecord).CancelEdit(); 
      //allthough we have canceled the editing we have to re-enable the edit mode (because 
      //the user may want to edit the selected record again) 
      ((IEditableObject)SelectedRecord).BeginEdit(); 

} 

앞으로 누군가를 도울 수 있기를 바랍니다!

+0

이 질문에 대한 정확한 대답은 아니지만 샘플 코드는 (그리고이 질문을 게시 한 이후로 경과 한 시간) 나에게 몇 가지 아이디어를 제공했습니다. 감사! – DaveB

관련 문제