WPF TreeView仅显示具有特定属性的节点

时间:2017-03-15 23:35:27

标签: wpf xaml

我的TreeView包含XAML,包含这样的CarNode对象。

<TreeView x:Name="CARS_TREE" 
      ItemsSource="{Binding CarsTree}" 
      IsEnabled="True" 
      Focusable="False"
      VirtualizingPanel.IsVirtualizing="True"
      VirtualizingPanel.VirtualizationMode="Recycling"
      ScrollViewer.CanContentScroll="True">

      <!-- handles showing of children, not related to this question -->
      <TreeView.ItemTemplate>
         <HierarchicalDataTemplate...>
            ...
         </HierarchicalDataTemplate>
      </TreeView.ItemTemplate>

 </TreeView>

CarsTree 是CarNode对象的集合

CarNode 是一个 IsFiltered 布尔值的对象,通过在搜索框中输入一些字符来确定用户是否已针对某辆车进行了过滤。例如,输入&#34; A&#34;将展示所有拥有&#34; a&#34;在他们的模型名称中。

目前,我的TreeView将显示CarsTree中的所有对象,无论它们是否 IsFiltered = true

Assunming我在CarsTree系列中有以下车型: 奥迪,本田,马自达,铃木,大众

CarNode对象可以有子节点。例如,大众可能有帕萨特,高尔夫,披头士,途观。如果有子节点并使用类型&#34; o &#34;在搜索字段中,应该过滤高尔夫及其父 VW

我如何确保

  1. 如果用户展开树,CarsTree中的所有汽车都会显示(显示全部 汽车:奥迪,本田,马自达,铃木,大众

  2. 如果用户通过键入&#34; A&#34;来搜索汽车或&#34; a&#34;,只包含汽车 &#34;&#34;在展开的树中显示(即奥迪,马自达,本田

  3. 如果用户类型说&#34; o &#34;那么所有汽车,包括子节点都应该 过滤器(即用户输入&#34; o &#34;过滤结果为本田大众, 的高尔夫球即可。这里VW被过滤,因为它包含Golf。

0 个答案:

没有答案