2014-03-07 54 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中不需要显示的项目全部拿出来,但是我必须将它们放在同一个集合中,否则它们不能来回交互,过滤会根据我所看到的创建一个单独的集合。这是令人困惑的......哈哈 –