2010-03-26 3 views
0

나는 INotifyProperyChanged를 구현하는 커스텀 객체를 가지고 있으며, 바인딩과 함께 멋지게 연출할 소프트 삭제를 구현할 수 있는지 궁금합니다. 각 개체는 IsDeleted 속성을 가지며이 속성이 true로 설정되면 GUI에 표시되지 않습니다. Binding 클래스를 꾸미는 커스텀 마크 업 익스텐션을 만들려고 생각했지만 예상대로 잘되지 않았다. 이제 IsDeleted와 함께 멀티 바인딩을 사용하여 바인딩 된 속성 중 하나로 간주하여 변환기가 어떤 개체가 삭제되는지 파악할 수있게했습니다. 그러나이 솔루션은 상당히 복잡하고 지루한 것처럼 들립니다.WPF : 소프트 삭제 및 바인딩?

누구든지 바인딩을 위해 소프트 삭제를 구현하는 방법을 알고 있습니까?

답변

2

요소를 숨기거나 표시하려면 개체의 IsDeleted 속성에 UIElement의 속성 표시를 바인딩 할 수 있습니다.

예를 들어 TextBlock을 사용합니다. XAML에서는

<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/> 

주를 작성할 수에 isDeleted에 해당하는 경우 위의 예에서 TextBlock이는 볼 수 있습니다. 나는 객체에 Exists와 같은 긍정적 인 속성을 정의 할 것입니다. 따라서 부울을 무효화하거나 자체 변환기를 빌드 할 필요가 없습니다.

WPF에는 부울을 가시성의 열거 형 값으로 변환하는 buildin 변환기가 있습니다.

+0

나는 당신이 제안한 것과 비슷한 것을했다. 내 기본 유형에 두 가지 속성이 있습니다. IsDeleted 및 Visiblity는 IsDeleted == true 인 경우 Visiblity.Collapsed를 반환합니다. – aks

1

소프트 삭제를 구현하는 또 다른 방법은 모든 항목의 컬렉션 외에도보기 모델에서 삭제되지 않은 항목 만 포함하는 모음을 유지 관리하고 노출하는 것입니다. 이것은 (내 마음에) 당신의 견해가 전혀 생각할 필요가없는 아주 큰 장점이 있습니다.

+0

MVVM 또는 이와 유사한 프로젝트를 사용하는 경우이 솔루션이 적합하지만이 시점에서는 응용 프로그램의 중요한 부분을 다시 작성해야합니다. – aks