2013-07-06 57 views
0

我有一个树视图,其中每个树视图项都包含一个信号和一个信号名。有没有办法将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> 
+0

获得如果你将创建自定义'TreeView',你会工作吗?我认为最好使用一个'Template/Style',并试着将它放在那里。现在很多开发者进行了一些更改来创建他们的'UserControls',但我认为这是错误的。我们需要使用'Template',或者使用带有类数据的'DataTemplate'。不仅仅是我,还有Adam Nathan在他的书“WPF 4释放书”中。 –

回答

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> 
相关问题