2012-01-30 2 views
0

Linq에서 값을 가져 오는 viewmodel의 속성에 바인딩 된 텍스트 상자가있는 WP7 앱 (Silverlight)이 있습니다 (TwoWay). SQL 데이터베이스. 그것은 텍스트 상자의 값을 변경할 때를 제외하고는 모두 작동하지만, 모든 것을 올바르게 설정하지만 datacontext의 SubmitChanges를 호출하지 않으므로 저장되지 않습니다. 이것은 일반적인 시나리오입니까? 다르게해야합니까? SubmitChanges 메서드를 호출해야한다는 양방향 바인딩을 알리는 방법이 있습니까? 감사.저장 방법 (SubmitChanges) TwoWay가 데이터베이스에 바인딩 될 때

답변

2

텍스트 상자를 데이터베이스에 직접 바인딩하면 안됩니다. 따라서 INotifyPropertyChanged을 구현하는 ViewModel을 사용하지 않고 대신 linq2sql 엔티티 클래스에 직접 바인드하면 틀리게 수행합니다.

ViewModel의 UI에 표시하려는 속성을 감싸고 PropertyChanged 이벤트 핸들러에서 SubmitChanges()을 호출하십시오.

물론 최선의 방법은 페이지 변경 (예 : OneNote/Office) 또는 저장 단추 같은 "자연 절약 지점"을 만드는 것입니다.

+0

감사! 나는 중간에 VM을 가지고 있으므로 훌륭한 솔루션처럼 들립니다. –

0

정상입니다. 속성이 변경 될 때마다 커밋을하려면 객체의 PropertyChanged 이벤트를 구독하고 SubmitChanges으로 수동 호출하십시오.

하지만 추천하지 않습니다. 최적의 성능을 얻으려면 페이지의 OnNavigatedFrom 메소드를 덮어 쓰고 SubmitChanges으로 전화하십시오.

관련 문제