我有一个树视图,其中每个树视图项都包含一个信号和一个信号名。有没有办法将scrollviewer应用于树视图项目的一部分?
我想在树形视图内展开一个名称面板,但我希望滚动查看器只能在包含treeviewitem信号的面板的右侧部分滚动。
是创建自定义treeview类的唯一答案吗?我最初的想法是将两个样式模板应用于每个树视图,以便展开器按钮位于一个树视图中,并且只扩展一个结果而扩展另一个树视图。但最终我无法找出一种方法来使用触发器链接两个树视图中的项目,以便当一个项目展开时,其对应项展开。
我也玩过使用controltemplate来定制它,但我觉得scrollviewer只需要放置在treeviewitem的一部分,但是在treeview控件内部没有办法将项目拆分到itemspresenter模板。
是我最好的选择,只是创建一个自定义treeview?
编辑:
创建一个ItemTemplate像建议将创建一个单独的ScrollViewer每个项目的一部分,所以我最终会与6个个小scrollviewers。但我想要做的是将滚动查看器应用于所有项目的右列。但是,要将scrollviewer应用于所有项目,我想我需要将它放在treeview控件模板中。但是在treeview控件模板中,您只能访问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>
获得如果你将创建自定义'TreeView',你会工作吗?我认为最好使用一个'Template/Style',并试着将它放在那里。现在很多开发者进行了一些更改来创建他们的'UserControls',但我认为这是错误的。我们需要使用'Template',或者使用带有类数据的'DataTemplate'。不仅仅是我,还有Adam Nathan在他的书“WPF 4释放书”中。 –