Silverlight 바운드 TextBox 브라우저가 닫힐 때 데이터 손실


3

양방향 바인딩을 사용하여 개체의 문자열 속성에 TextBox 컨트롤을 바인딩하면 브라우저 창/탭을 닫기 전에 사용자가 컨트롤에서 벗어나면 괜찮습니다. .

하지만 텍스트 상자의 내용을 변경 한 사용자는 데이터가 저장 될 것으로 예상되는 창을 닫았습니까?

TextChanged 이벤트 또는 Application_Exit() 핸들러에 연결하여 속성을 수동으로 업데이트 할 수는 있지만 본질적으로 바인더 작업을 다시 수행합니다. 그럼에도 불구하고 이것들은 지금까지 유일한 해결책 인 것처럼 보인다.

nb. WPF 응용 프로그램의 동일한 xaml/코드가 제대로 작동합니다 (App.OnExit는 업데이트 된 데이터를 개체에 표시 함).

0

Silverlight의 Binding 클래스에는 UpdateSourceTrigger 속성이 있습니까? WPF에서는 바인드 소스를 업데이트 할 컨트롤을 알 수 있습니다 때마다이 같은 (오히려 컨트롤이 포커스를 잃으면 이상) 속성 변경 :

<TextBox Text="{Binding Path=Foo,UpdateSourceTrigger=PropertyChanged}" /> 
  0

좋은 시도, 문서화 된 찾을 수 없습니다. 그리고 그것을 시도 할 때 페이지가 전혀로드되지 않았습니다. 그건 그렇고, 난 원래의 xaml/WPF 애플 리케이션에서 코드를 테스트하고 잘 작동합니다. 22 feb. 092009-02-22 11:59:11


1

나는 중요한 웹 개발 경험을 바탕으로 여기에 추측을 만들고 있어요 Silverlight 환경은 매우 제한적입니다.

JavaScript에서 onunload를 HTML에 연결 한 다음 Silverlight 코드에서 함수를 호출하여 처리 할 수 ​​있습니다.

  0

Silverlight에는 페이지 언로드 유형 이벤트 (app_exit)가 있지만 여전히 제어 데이터를 수동으로 검색해야합니다. 아마도 최선의 해결 방법 일 것입니다. 22 feb. 092009-02-22 17:00:21


1

이것은 Silverlight에서 문제가되는 것으로 보입니다. 포커스를 잃을 때까지 텍스트 상자의 바운드 속성을 업데이트하지 않습니다.

동적 필터를 구현해야하는 한 가지 해결 방법은 TextChanged 이벤트 처리기를 구현하고 속성을 수동으로 업데이트하는 것입니다.

  0

고마워. 그에 따라 질문을 업데이트했습니다. 22 feb. 092009-02-22 17:03:24