2010-03-26 86 views
0

我有自定義對象實現INotifyProperyChanged,現在我想知道是否有可能實現軟刪除,這將很好地綁定?每個對象都有一個IsDeleted屬性,如果該屬性設置爲true,則不會在GUI中顯示。我正在考慮製作一個自定義標記擴展來裝飾Binding類,但它沒有按預期工作。現在我正在考慮使用MultiBinding和IsDeleted作爲綁定屬性之一,以便轉換器能夠找出哪個對象被刪除。但是這個解決方案聽起來很複雜和無聊。WPF:軟刪除和綁定?

有沒有人有一個想法如何實現軟刪除綁定?

回答

2

您可以將UIElement的Property Visibility綁定到對象的屬性IsDeleted,以隱藏或顯示元素。

作爲一個例子,我使用了一個TextBlock。在XAML中,你可以寫

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

注:在上面的例子中,TextBlock的是可見的,請將isDeleted時也是如此。我會定義一個積極的屬性,例如對象上的Exists。所以你不必否定布爾值或建立你自己的轉換器。

WPF有一個buildin轉換器,它將boolean轉換爲Visibility的枚舉值。

+0

我做了類似於你的建議。我在我的基類型中有兩個屬性,即。 IsDeleted和Visiblity,如果IsDeleted == true,則返回Visiblity.Collapsed。 – aks 2010-03-30 09:49:10

1

實現軟刪除的另一種方法是維護和公開只包含那些除了收集所有項目之外還未在視圖模型中刪除的項目的集合。這在我看來非常有用,它不是你的觀點需要考慮的東西。

+0

雖然這個解決方案是完美的,如果有人使用MVVM或類似的東西,我是這個項目,我會有問題重寫應用程序在這一點上的重要部分。 – aks 2010-03-30 09:48:04