Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于属性忽略/忽略集合中的项_C#_Silverlight_Xaml_Listbox_Silverlight 5.0 - Fatal编程技术网

C# 基于属性忽略/忽略集合中的项

C# 基于属性忽略/忽略集合中的项,c#,silverlight,xaml,listbox,silverlight-5.0,C#,Silverlight,Xaml,Listbox,Silverlight 5.0,所以我要做的是我有一个集合,它与几个不同的元素交互。一个依赖于所有项目,另一个不需要所有项目。例如,元素A需要所有项,但在其中一些项上带有{x:Null}DisplayName,因此我尝试在元素B中使用它,将其作为列表框中的项列出 <ListBox.ItemTemplate> <DataTemplate> <StackPanel Visibility="{Binding DisplayName, Converter={StaticResource nu

所以我要做的是我有一个集合,它与几个不同的元素交互。一个依赖于所有项目,另一个不需要所有项目。例如,元素A需要所有项,但在其中一些项上带有
{x:Null}
DisplayName
,因此我尝试在元素B中使用它,将其作为
列表框
中的项列出

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

        .....

     </StackPanel>
</ListBox.ItemTemplate>

.....
当然,这只是设置了
DataTemplate
父级的可见性,所以如果它为Null,那么visibility=“Collapsed”是吗

问题是,它仍然作为一个项目生成,但不显示内容,所以列表框上的一个空白项目仍然会响应鼠标悬停之类的操作,并占用空间。显然不是最好的途径,所以我希望在这里接受教育


如果某个项等于{x:Null},我们如何基于属性
DisplayName
完全忽略该项?知道这一点很方便。

我不认为您可以通过
数据模板上的绑定来做到这一点。我认为在将集合绑定到
ListBox
ItemSource
属性之前,您需要过滤/修改集合。

这就是我遇到的问题,因为两个元素都需要共享相同的ItemSource,因为它们彼此交互。除非你说我可以过滤收集的结果并提供两个独立的ItemSource,但仍然允许它们进行交互?如果这有意义的话。是的,我想在你的ViewModel中,你应该有一个属性,它是你的实际集合,然后是第二个属性,它返回第一个属性的过滤版本。因此,这些项目将被共享。不知道你所说的“相互交流”是什么意思,我不能肯定,但这似乎是可行的…你害怕这一点,但试图保持简单的解释。因此,如果我有一个以图层作为集合项的地图,listbox允许用户以各种方式与这些图层交互。除了少数项目(图层)不需要与地图交互,甚至不需要在地图外部显示为图层。我只想将列表框中不需要显示的项目全部取出,但我必须将它们保存在同一个集合中,否则它们无法来回交互,过滤将创建一个与我看到的内容不同的集合。这让人困惑。。。哈哈,我想我或多或少都在关注,但还是不确定“互动”部分。你是对的,过滤会创建一个单独的集合。但从您的描述来看,只要两个集合中的对象相同,就可以了。对过滤列表中的对象(在列表框中使用)所做的任何更改也会自动对非过滤列表中的对象(在地图上使用)所做的任何更改,很难问具体的问题,同时尊重所有的专有机密性垃圾…但今天是星期五,所以我认为你的想法在概念上是正确的,所以算上回答了。