Wpf 具有各种类型控件的列表框模板
我正在尝试修改现有的WPF win应用程序,以便代表过滤器的复选框列表有时还包括一个滑块控件子节点。现在是复选框Wpf 具有各种类型控件的列表框模板,wpf,xaml,Wpf,Xaml,我正在尝试修改现有的WPF win应用程序,以便代表过滤器的复选框列表有时还包括一个滑块控件子节点。现在是复选框 <!-- hasChildrenTemplate --> <HierarchicalDataTemplate x:Key="HasChildren" ItemsSource="{Binding Children}"> <TextBlock Text="{Bin
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
这就是我想要的。目前,它看起来就像这样,但没有滑块
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
(更新看起来更清晰)
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
基本列表是一个可观察的集合。它目前只有一个List Children属性,该属性与模板选择器绑定以获得不同的深度
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
我想我必须让列表框更直接地绑定到过滤器对象,而不是过滤器子列表
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
新的各种过滤器对象可能有也可能没有列表或其他属性来驱动滑块
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
有一个c#模板选择器,但它在子列表而不是过滤器列表上操作。它可以得到子节点的不同深度
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
我可以根据需要更改集合和对象
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
有什么建议吗?我在js和html中做过这类事情,但我不喜欢WPF和xmal
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
谢谢
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
这很接近,但在我不想要的主要关卡上设置了一个复选框。我只希望复选框位于应该有复选框的复选框的最低级别
<DockPanel.Resources>
<HierarchicalDataTemplate x:Key="Other">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" TextTrimming="CharacterEllipsis" />
</StackPanel>
</HierarchicalDataTemplate>
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<Slider Width="100"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren" ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for filter list -->
<src:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
NoChildren="{StaticResource NoChildren}"
Slider="{StaticResource Slider}"
Other="{StaticResource Other}"/>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView2"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
</TreeView>
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
我确保每个主节点都有一个集合,从而使它正常工作。滑块是单个子节点
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>
<!-- hasChildrenTemplate -->
<HierarchicalDataTemplate x:Key="HasChildren"
ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"
/>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
<!-- noChildrenTemplate -->
<HierarchicalDataTemplate x:Key="NoChildren">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked }"
Padding="0 0 5 0"
x:Name="itemChecked"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="Slider">
<StackPanel Orientation="Horizontal">
<!--<TextBlock Text="{Binding Name}" />-->
<Slider Width="100"
HorizontalAlignment="Right"
TickPlacement="BottomRight"
Value="{Binding Value}"
Minimum="{Binding Min}"
Maximum="{Binding Max}"/>
</StackPanel>
</HierarchicalDataTemplate>
<!-- template selector for location filter list -->
<local:FilterTemplateSelector x:Key="FilterTemplateSelector"
HasChildren="{StaticResource HasChildren}"
Slider="{StaticResource Slider}"
NoChildren="{StaticResource NoChildren}"
Dma="{StaticResource Other}"/>
<!-- location filter template -->
<HierarchicalDataTemplate x:Key="filterTemplate"
ItemsSource="{Binding Children}"
ItemTemplateSelector="{StaticResource FilterTemplateSelector}">
<TextBlock Text="{Binding Name}"
/>
</HierarchicalDataTemplate>
</DockPanel.Resources>
<TreeView x:Name="uiFilterTreeView"
Width="250"
ItemsSource="{Binding Path=Filters}"
BorderThickness="1,1,1,0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemTemplate="{StaticResource filterTemplate }"/>