2009-12-22 39 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

相关问题