我有一个树视图,其中每个树视图项都包含信号和信号名称。
我希望在treeview项目中有一个扩展的名称面板,但我希望滚动查看器只滚动包含treeviewitem信号的面板的右侧部分。
创建自定义树视图类的唯一答案是什么?我最初的想法是将两个样式模板应用于每个树视图,这样扩展器按钮就在一个树视图上,只是在另一个树视图的扩展中扩展一个结果。但最终我无法想出一种方法来使用触发器链接两个树视图中的项目,这样当一个项目扩展时,其对应项会扩展。
我也只使用controltemplate来定制它,但我觉得scrollviewer只需要放在treeviewitem的一部分周围,但是在treeview控件模板内部没有办法将项目分割到itemspresenter 。
我是创建自定义树视图的最佳选择吗?
编辑:
创建一个类似于建议的itemtemplate会为每个项目的一部分创建一个单独的scrollviewer,所以我最终会得到6个小的scrollviewer。但我要做的是在所有项目的右栏上应用滚动查看器。但是,要将scrollviewer应用于所有项目,我想我需要将它放在treeview controltemplate中。但是在treeviewcontroltemplate中,您只能访问itemspresenter:
<ControlTemplate TargetType="TreeView">
<ScrollViewer
Focusable="False"
CanContentScroll="False"
Padding="4">
<StackPanel>
<wpfExp:SignalGraphAxis
PenColor="{Binding ElementName=GraphColorPicker, Path=SelectedColor, Mode=OneWay}"
Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
PenWidth="{Binding ElementName=graph_viewer, Path=GraphPenWidth, Mode=OneWay}"
X_Scale="{Binding ElementName=graph_viewer, Path=X_Scale, Mode=OneWay}"
MaxTimeValue="{Binding ElementName=graph_viewer, Path=_SignalDataViewModel.MaxTimeValue, Mode=OneWay}"
/>
<ItemsPresenter />
</StackPanel>
</ScrollViewer>
</ControlTemplate>
答案 0 :(得分:1)
您可以使用Itemtemplate来完成。这是一个例子
<TreeView>
<TreeView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0">
<!-- Your Signal data binding -->
</ScrollViewer>
<!-- Your Signalname data binding -->
</Grid>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>