2013-07-06 58 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> 
相關問題