Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 有没有办法将scrollviewer仅应用于treeview项目的一部分?_Wpf_Xaml_Treeview - Fatal编程技术网

Wpf 有没有办法将scrollviewer仅应用于treeview项目的一部分?

Wpf 有没有办法将scrollviewer仅应用于treeview项目的一部分?,wpf,xaml,treeview,Wpf,Xaml,Treeview,我有一个treeview,其中每个treeview项都包含一个信号和一个信号名 我希望在treeview项目中有一个展开的名称面板,但我希望scrollviewer只在包含treeview项目信号的面板的右侧部分滚动 创建自定义treeview类的唯一答案是什么?我最初的想法是将两个样式模板应用于每个treeview,这样expander按钮就位于一个treeview上,并使其中一个的扩展导致另一个的扩展。但最终我无法找到一种方法来使用触发器链接两个TreeView中的项,这样当一个项展开时,它

我有一个treeview,其中每个treeview项都包含一个信号和一个信号名

我希望在treeview项目中有一个展开的名称面板,但我希望scrollviewer只在包含treeview项目信号的面板的右侧部分滚动

创建自定义treeview类的唯一答案是什么?我最初的想法是将两个样式模板应用于每个treeview,这样expander按钮就位于一个treeview上,并使其中一个的扩展导致另一个的扩展。但最终我无法找到一种方法来使用触发器链接两个TreeView中的项,这样当一个项展开时,它的对应项也会展开

我还尝试过仅使用controltemplate对其进行自定义,但我觉得scrollviewer只需要放置在treeview项目的一部分,但是在treeview控件模板内无法将项目拆分到itemspresenter

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

编辑:

像建议的那样创建一个itemtemplate将为每个项目的一部分创建一个单独的scrollviewer,所以我最终会得到6个小scrollviewer。但我要做的是在所有项目的右栏上应用scrollviewer。但是,要将scrollviewer应用于所有项目,我想我需要将它放在treeview控件模板中。但在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>

您可以使用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>

获得如果您要创建自定义的
树状视图
,您会使用它吗?我认为最好使用
模板/样式
,并尽量做到这一点。现在许多开发人员为了一些更改创建了他们的
UserControls
,但我认为这是错误的。我们需要使用
模板
,或者对类数据使用
数据模板
。不仅是我,亚当·内森在他的书《WPF4》中也发布了这本书。