2010-04-16 10 views
16

개체의 DataContext 바인딩을 강제로 업데이트 할 수 있습니까? 표에서 이벤트를 사용하고 있고 이벤트가 시작되기 전에 바인딩 업데이트가 처리되지 않습니다.강제 바인딩 업데이트 Silverlight

값싼 트릭이이 문제를 해결하려면? 결국 텍스트 상자에서 값을 가져 와서 개체를 업데이트하는 기존의 수동 방법을 항상 수행 할 수 있지만 바인딩을 사용하는 것이 좋을 것입니다.

UPDATE

내 그리드는 두 개의 텍스트 상자가 포함되어 있습니다. 사용자가 그리드 (MouseButtonUp 이벤트)를 클릭하면 변경 사항을 저장합니다. 하지만 내 MouseButtonUp 이벤트 처리기에서 datacontext가 아직 최신 상태가 아닙니다. 포커스가 사라지면 텍스트 상자 만 업데이트되기 때문에 그럴 것이라고 생각합니다.

답변

31

바인딩에서 UpdateSource() 메타 론을 호출하여 소스 바인딩을 강제로 업데이트 할 수 있습니다. 저장하기 바로 전에 MouseButtonUp 이벤트 핸들러에 추가해보십시오.

과 같이 :

BindingExpression binding = FirstTextBox.GetBindingExpression(TextBox.TextProperty) 
if (null != binding) binding.UpdateSource(); 

당신은 MSDN에 대한 자세한 정보를 얻을 수 있습니다 http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

+0

아직 시도하지는 않았지만 제대로 작동 할 것이라고 확신합니다. 고맙습니다. – Matt

+0

매력처럼 작동합니다. – grabah

0

Alternativly 당신의 TextInput 이벤트를 잡을 수 있습니다 (이 사용자 프레스 내부 텍스트 상자를 입력 할 때 발생합니다) 다음을 두 번째 텍스트 상자로 포커스를 변경하십시오. 포커스를 잃으면 바인딩 된 값이 업데이트됩니다.