0

INotifyProperyChanged を実装するカスタム オブジェクトがありますが、バインディングでうまく機能するソフト削除を実装できるかどうか疑問に思っています。各オブジェクトには IsDeleted プロパティがあり、このプロパティが true に設定されている場合、GUI に表示されません。Binding クラスを装飾するカスタム マークアップ拡張機能を作成することを考えていましたが、期待どおりに機能しませんでした。現在、IsDeleted をバインドされたプロパティの 1 つとして MultiBinding を使用して、コンバーターが削除されたオブジェクトを特定できるようにすることを検討しています。しかし、このソリューションは非常に複雑で退屈に思えます。

バインディングのためにソフト削除を実装する方法を知っている人はいますか?

4

2 に答える 2

2

UIElement の Property Visibility をオブジェクトのプロパティ IsDeleted にバインドして、要素を表示または非表示にすることができます。

例として、TextBlock を使用します。XAMLで書くことができます

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

注: 上記の例では、IsDeleted が true の場合、TextBlock が表示されます。オブジェクトに Exists などの肯定的なプロパティを定義します。したがって、ブール値を否定したり、独自のコンバーターを作成したりする必要はありません。

WPF には、ブール値を可視性の列挙値に変換するビルトイン コンバーターがあります。

于 2010-03-26T14:56:54.240 に答える
1

ソフト削除を実装する別の方法は、すべてのアイテムのコレクションに加えて、ビューモデルで削除されていないアイテムのみを含むコレクションを維持および公開することです。これには(私の考えでは)非常に大きなメリットがあり、あなたの見解ではまったく考える必要がありません。

于 2010-03-26T23:57:30.217 に答える