7

저는 VS2010, WPF 및 EF로 작업하고 있습니다. 엔터티를 데이터 소스 도구 창 밖으로 드래그하여 창에 컨트롤을 배치했습니다. 엔티티가 여러 레이블과 텍스트 상자로 표현되도록 "세부 사항"설정을 사용했습니다.포커스가있는 요소에서 WPF가 변경 내용을 적용하도록합니다.

_context.SaveChanges(); 

내가 데이터를 편집하고있어, 텍스트 상자에 포커스가 중에 변경 사항이 다시 DB에 최선을 다하고되지 않은 : 나는 또한 다음 코드를 사용하여 버튼을 추가했습니다. 다른 모든 것은 잘 처리됩니다. 저장 버튼을 누르기 전에 다른 요소로 포커스를 이동하면 커밋도 커밋됩니다. 나는 DataGrid에서 같은 것을 경험했다.

나는 간단한 것을 놓치고있는 것을 알고 있지만, 알아낼 수 있습니다. 내가 누락 된 것에 대한 아이디어가 있습니까?

감사합니다.

답변

12

TextBox의 기본 Binding UpdateSourceTrigger가 LostFocus이기 때문입니다. '프로그래밍 방식으로 바인딩 된 텍스트 상자의 값을 설정하려고 할 때

<TextBox Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" /> 
+2

왜 텍스트 상자는 "초점을 잃고"하지 않습니다 나는 그것이 작동있어 방법은 다음과

이야? 프로그래밍 방식으로 이것을 강제 할 수 있습니까? –

+0

+1 그게 내가 찾고 있었던 바로 그 것이다. 감사! –

+1

누구든지 Rob Fonseca-Ensor의 질문에 답변 할 수 있습니까? – newman

3

난 그냥이 같은 문제로 실행하지만 아베 총리의 제안은 didn를 : 당신이하여 PropertyChanged로 설정하는 모든 바인딩을 수정하는 경우, 당신이 기대처럼 작동합니다 우리 설정에 대한 작업 (일부 불규칙한 유효성 검사 동작이 발생했습니다). 버튼을 클릭하면

TextBox tb = (TextBox)this.FindName("TargetTextBox"); 
tb.Text = "1234"; 
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource(); 
관련 문제