2014-03-07 131 views
0

所以我正在做的是我有一個與兩個不同元素交互的集合。一個依賴於所有的項目,另一個不需要全部項目。作爲一個例子,元素A,需要的所有項目,但進行了一些他們的{x:Null}DisplayName,所以我試圖用在元素B向來自在ListBox等爲項目一覽忽略它;忽略/忽略基於屬性的集合中的項目

<ListBox.ItemTemplate> 
    <DataTemplate> 
    <StackPanel Visibility="{Binding DisplayName, Converter={StaticResource nullVisConv}}"> 

     ..... 

    </StackPanel> 
</ListBox.ItemTemplate> 

當然,這只是設置在DataTemplate的父級的可見性,所以如果它爲空,比能見度=「坍塌」了吧?

問題是,它仍然會產生爲項目而是讓你結束了一個列表框,將仍然響應之類的東西鼠標懸停和佔用空間空白項目不顯示內容。顯然不是最好的路線,所以我希望在這裏接受教育。

我們怎麼能忽略和完全基於物業DisplayName如果它等於{X:空}顯示忽視的項目?這將很方便知道。

回答

1

我不認爲你可以在DataTemplate綁定做到這一點。我認爲您需要在收集ListBoxItemSource屬性之前過濾/修改您的收藏。

+0

看到這就是我遇到問題的地方,因爲這兩個元素需要共享相同的ItemSource,因爲它們彼此交互。除非你說我可以過濾收集的結果並提供兩個單獨的ItemSources,但仍然允許它們進行交互?如果這是有道理的。 –

+0

是的,我想在你的ViewModel中你有一個屬性是你的實際集合,然後第二個屬性返回第一個屬性的過濾版本。所以這些項目將被共享。不知道你的意思是「互相交流」,我無法確定,但它似乎會起作用... – Tim

+0

雅是害怕這一點,但試圖保持簡單的解釋。所以如果我有一個帶有圖層的地圖作爲集合項目,那麼列表框允許用戶以各種方式與這些圖層進行交互。除了少數項​​目(圖層)不需要與地圖本身作爲圖層進行交互或甚至顯示外。我只是想將ListBox中不需要顯示的項目全部拿出來,但是我必須將它們放在同一個集合中,否則它們不能來回交互,過濾會根據我所看到的創建一個單獨的集合。這是令人困惑的......哈哈 –