2011-04-10 2 views
2

저는 ASP.NET 개발자이지만 최근에 WPF 응용 프로그램도 개발하고 있습니다. ASP.NET에서는 GridView에서 데이터를 새로 고침해야 할 때마다 DataBind()으로 호출합니다. 하지만 WPF에서 그 대안은 무엇입니까? 해결 방법은 현재 데이터를 새로 고치기 위해 INotifyCollectionChanged을 구현했습니다.WPF에서 ASP.NET DataBind()의 대안은 무엇입니까?

답변

4

해결 방법으로 INotifyCollectionChanged을 구현하면 안됩니다. 이는 실제로 WPF에서 좋은 방법입니다.

(당신이 대신 System.ComponentModel.BindingList을 채울 수 있습니다. 자동으로 목록의 변화에 ​​따라 업데이트됩니다이 목록에 바인딩 된 WPF 컨트롤을.)

을 그래서 왜 ASP.NET의 표준 관행을 바인딩 명시 적 데이터 반면, observer pattern은 WPF에서 사용됩니까? 이것은 두 환경의 특성이 서로 다른 것에서 비롯됩니다.

ASP.NET은 모두 웹 페이지를 만들고 채우는 것에 관한 것입니다. 웹 페이지가 점진적으로 업데이트되지 않습니다. 사용자가 포스트 백을 수행하면 완전히 새로운 웹 페이지가 다시 만들어집니다. 이 때문에 배치 방식을 사용하는 것이 효율적입니다. 모든 데이터를 조합 한 다음 "OK, 데이터 준비가 완료되었습니다. 이제 컨트롤을 채 웁니다"라고 말합니다.

리치 클라이언트 응용 프로그램에서 사용자 인터페이스 컨트롤은 한 번만 생성되지만 기본 데이터는 컨트롤의 수명 내에서 변경됩니다. 명시 적 데이터 바인딩을 사용한 경우 데이터가 변경 될 때마다 어떤 컨트롤을 업데이트해야하는지 결정한 다음 각 컨트롤에서 "DataBind"를 호출합니다. 그것은 유지 보수의 골치 거리입니다. 바인딩을 인식하는 유일한 구성 요소는 컨트롤 자체입니다. 데이터는 "내가 바뀌었다"고 발표 할 수 있으며 컨트롤은 자신의 재량으로 스스로 업데이트 할 수 있습니다.

관련 문제