0

我有一个树视图,其中每个树视图项都包含一个信号和一个信号名。

我想在扩展的树视图项目中有一个名称面板,但我希望滚动查看器只滚动面板的右侧部分,其中包含树视图项目的信号。

是创建自定义树视图类的唯一答案吗?我最初的想法是将两个样式模板应用于每个树视图,以便扩展器按钮仅位于一个树视图上,并且仅使一个扩展导致另一个扩展。但最终我无法找到一种方法来使用触发器链接两个树视图中的项目,以便当一个项目展开时,它的对应项也会展开。

我也尝试使用仅使用 controltemplate 对其进行自定义,但我觉得滚动查看器只需要放置在 treeviewitem 的一部分周围,但是在 treeview 控件模板内时无法将项目拆分到 itemspresenter。

仅创建自定义树视图是我的最佳选择吗?

编辑:

创建一个像建议的项目模板将为每个项目的一部分创建一个单独的滚动查看器,所以我最终会得到 6 个小滚动查看器。但我想要做的是在所有项目的右列上应用一个滚动查看器。但是,要将滚动查看器应用于所有项目,我想我需要将它放在树视图控件模板中。但在 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>
4

1 回答 1

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>
于 2013-07-07T05:04:00.207 回答