WPF:ソフト削除と結合?
-
22-09-2019 - |
質問
私はINotifyProperyChangedを実装するカスタムオブジェクトを持っており、結合してうまく演じることになるソフトの削除を実現することが可能であるならば、今、私は思ったんだけど?各オブジェクトはIsDeletedプロパティを持っているでしょうし、このプロパティがtrueに設定されている場合、それはGUIに表示されないよりも。私は、Bindingクラスを飾るだろうが、期待どおりに働いていなかったカスタムマークアップ拡張機能を作ることを考えました。今、私は、コンバータは、オブジェクトが削除されて把握することが可能であろうように、バウンドプロパティの一つとしてIsDeletedでMultiBindingのを使用して検討しています。しかし、このソリューションは非常に複雑な音と退屈ます。
ん誰?結合するためのソフト削除を実装する方法のアイデアを持っている。
解決
あなたが非表示にするには、あなたのオブジェクトのIsDeletedプロパティにするUIElementのプロパティの可視性を結合するか、または要素を表示することができます。
の例として、私はテキストブロックを使用します。 XAMLであなたが書くことができます。
<TextBlock Text="IsDeleted" Visibility={Binding IsDeleted}/>
注:上記の例では、テキストブロックはIsDeletedが真である場合、表示されています。私は、このようなオブジェクト上に存在するとして、正のプロパティを定義します。あなたはブール値を否定したり、独自のコンバータを構築する必要はありませんので。の
WPFは、変換が可視の列挙値にブールことbuildinコンバータを有している。
他のヒント
ソフト削除を実装するための別の方法は、すべてのアイテムのコレクションに加えて、あなたのビューモデルでは削除されていない項目のみを含むコレクションを維持し、露出することによってです。これは、あなたのビューはすべてで考える必要があるものではないということ(私の心に)非常に大きなメリットがあります。