2009-12-22 95 views
11

我正在使用我們使用標準ControlTemplates創建的自定義滾動條,但是當我將它們應用於ListBox時,右下角有一個角落,我無法找到任何方法重寫。無法完全設計WPF中的列表框/滾動查看器

不幸的是,我不能發佈圖片,直到我得到更多的積分。但是我所指的角落是當一個垂直和水平滾動條出現時,右下角有一個填充了灰白色的空間,我無法選擇它

+0

你可以添加你的模板代碼......它可能有助於回答這個問題。 – 2009-12-22 16:09:31

回答

10

這是模板代碼我使用混合得到了ScrollViewer中的一部分。我在右下角添加了一個矩形,並將填充設置爲紅色。您可以使用相同的方式對其進行設置,或者您可以使用Grid.RowSpan =「2」爲VerticalScrollBar(第一個)或Grid.ColumnSpan =「2」爲Horizo​​ntalScrollBar(第二個)擴展其中一個ScrollBar以覆蓋空間。

<Style TargetType="{x:Type ScrollViewer}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition/> 
         <ColumnDefinition Width="Auto"/> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition Height="Auto"/> 
        </Grid.RowDefinitions> 
        <ScrollContentPresenter Grid.Column="0"/> 
        <ScrollBar Name="PART_VerticalScrollBar" Grid.Row="0" Grid.Column="1" Value="{TemplateBinding VerticalOffset}" Maximum="{TemplateBinding ScrollableHeight}" ViewportSize="{TemplateBinding ViewportHeight}" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/> 
        <ScrollBar Name="PART_HorizontalScrollBar" Orientation="Horizontal" Grid.Row="1" Grid.Column="0" Value="{TemplateBinding HorizontalOffset}" Maximum="{TemplateBinding ScrollableWidth}" ViewportSize="{TemplateBinding ViewportWidth}" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/> 
        <Rectangle Grid.Row="1" Grid.Column="1" Fill="Red"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

它確實有效。但我碰巧發現執行性能呈線性急劇下降。以顯示7000項(相對簡單和輕量級項目)過去需要1-2秒,但這種方法可能高達15-19秒。我想知道在哪裏放慢渲染性能。 – 2014-11-06 06:14:31

0

有兩件事可能有幫助:

1)使用Snoop來探索應用程序的元素樹,這可能有助於發現問題。

2)根據您開始控制的方式,您可以考慮從標準ListBox的副本開始。當我從空白或部分模板開始樣式化時,我發現某些控件存在問題。

希望幫助

+0

我實際上是從標準列表框的副本(使用Blend提取的模板)開始的。 – DJScrib 2009-12-22 07:55:50

相關問題