2009-07-09 4 views
1

WPF 프로젝트에서 속성 변경 이벤트를 구현하려고합니다 (또는 어느 것이 어떨지) 최선의 방법을 찾으려고합니다.WPF Databinding에 대한 몇 가지 문제점 그러나 당신은 어떤 종류인지 추측해야만합니다

확장/축소 아이콘이있는이 헤더가 있고 내 창에 여러 헤더가있을 수 있습니다. 모든 머리글이 처음에 나열되지만 머리글을 업데이트하기 위해 내 창에서 '새로 고침'을 클릭 할 때 사용자가 일부가 아닌 머리글 (일부는 아님)을 확장하면 기본값을 축소해야합니다. 그것이 새롭게되기 전에였습니다.

헤더 1과 2가 펼쳐지고 3과 4가 접힌 경우 새로 고침 버튼을 누르면 실제로 기억하고 싶습니다. 문제는 '새로 고침'을 클릭하면 전체보기가 새로 고쳐 지므로 정보가 손실된다는 것입니다.

헤더를 확장하거나 축소 할 때 정보를 저장할 수 있도록 이러한 헤더를 호스팅하는 실제 클래스에 컬렉션을 갖기 위해 확장/축소가 발생했음을 콜렉션에 알리고 업데이트하려고합니다. 컬렉션 내의 해당 값을 새로 고침 버튼을 클릭 할 때 헤더를 새로 고치기 전에 이미있는 경우 GUID와 비교할 수 있습니다. 확장/축소 된 정보가 저장된 새 헤더를 업데이트합니다. 새로 고침, 그것은 그것의 상태를 유지합니다.

답변

1

바인딩 된 클래스의 개별 인스턴스에 대해 INotifyPropertyChanged 인터페이스를 구현하려고합니다.

또한 헤더가 저장된 컬렉션에서 INotifyCollectionChanged 인터페이스를 구현하여 컬렉션 자체가 변경되는시기를 나타내야합니다.

올바르게 구현 된 경우이 두 인터페이스는 WPF 데이터 바인딩 시스템에서 개체와 컬렉션이 올바르게 바인딩되도록해야합니다.

+0

(INotifyCollectionChanged 체크 아웃) ObservableCollection

+0

안녕하세요 casperOne, 빠른 답장을 보내 주셔서 감사합니다. 나는 부울 속성이 .xaml에도 존재하지 않을 때 INotifyPropertyChanged 인터페이스를 사용할 수 있습니까? 확장하려면 '[+]'를 클릭하고 아이콘은 '[-]'축소로 변경하고 헤더가 확장되면 'IsExpanded'속성을 TRUE로 설정하려고하며이 속성이 변경 될 때마다, 헤더를 호스팅하는 클래스에 알리고 싶습니다 (어떤보기에도 알리지 않음). 감사합니다. –

+0

@ Dan : 가능합니다. 그러나 XAML에 없으면 값에 바인딩 할 수 없습니다. 또한이 속성이 노출되어 있지 않으므로 (헤더를위한 데이터와 별도로 노출해야 함) 디자인이 약간 부정하다고 암시합니다. – casperOne