2013-04-23 147 views
3

我從here下載了TreeListView。當數據被剪輯時,它沒有顯示水平或垂直滾動​​條。像這樣WPF:TreeView或TreeListView頭水平滾動問題

所以我改變了它的風格,以

<Style TargetType="{x:Type l:TreeListView}"> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" 
      Value="Auto" /> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" 
      Value="Auto" /> 
    <Setter Property="VerticalContentAlignment" 
      Value="Center" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type l:TreeListView}"> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
        <DockPanel> 
         <GridViewHeaderRowPresenter Columns="{StaticResource gvcc}" 
                DockPanel.Dock="Top" /> 
         <ScrollViewer x:Name="_tv_scrollviewer_" 
             Background="{TemplateBinding Background}" 
             CanContentScroll="False" 
             Focusable="True" 
             HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
             Padding="{TemplateBinding Padding}" 
             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
             VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"> 
          <ItemsPresenter /> 
         </ScrollViewer> 
        </DockPanel> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="VirtualizingStackPanel.IsVirtualizing" 
          Value="true"> 
         <Setter Property="CanContentScroll" 
           TargetName="_tv_scrollviewer_" 
           Value="true" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

垂直滾動條的罰款。但問題是水平Scollbar。當數據水平裁剪,滾動條向右移動時,數據向右移動,但標題保持原位。喜歡這個。

如何解決這個問題,當treeitem水平滾動的,頭和它一起移動。我不允許在scrollviewer中放置標題,因爲當數據垂直滾動時它們需要可見。

+0

用戶界面問題是相當皮塔。你有沒有嘗試其他供應商控制,如devexpress? – Kelmen 2013-04-23 08:01:08

+0

@Kelmen:沒有第三方只控制自由控件。 – 2013-04-23 08:37:52

+0

@尼克希爾,你有沒有遇到過這種情況?我面對完全相同的問題。謝謝,特德 – Ted 2014-08-06 15:54:40

回答

0

我不得不用這種樹的同樣的問題,現在由sincronizing滾動條解決。我向垂直隱藏和禁用的GridViewHeaderRowPresenter添加了一個滾動條,並且我使用了codeproject中已經實現了滾動條的sincronization的代碼。

<DockPanel> 
     <ScrollViewer DockPanel.Dock="Top" HorizontalScrollBarVisibility="Hidden" 
        VerticalScrollBarVisibility ="Disabled" 
        controls:ScrollSynchronizer.ScrollGroup="Group1"> 
      <GridViewHeaderRowPresenter Columns="{StaticResource gvcc}"/> 
     </ScrollViewer> 
     <ScrollViewer 
        HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" 
        VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" 
        controls:ScrollSynchronizer.ScrollGroup="Group1"> 
        <ItemsPresenter /> 
      </ScrollViewer> 
</DockPanel> 

鏈接庫http://www.codeproject.com/Tips/564665/Synchronize-Two-Scroll-Viewers-in-WPF 和的lib http://www.codeproject.com/Articles/39244/Scroll-Synchronization的原創文章。

0

我相信設置HorizontalScrollBarVisibility="Disabled"應該強制scrollviewer內的內容。在滾動條被禁用的情況下,它應該避免搞亂渲染。這對於幾個版本來說實際上是一個問題。我不確定它是否已在最新的WPF中修復。

0

如果你想完整的樹視圖(包括標題),水平滾動,additionanly添加scrolviewer這樣的:

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" > 
    <Treeview/> 
</ScrollViewer>