自定义简单滚动条链接到Listview

时间:2011-09-14 21:07:30

标签: wpf scrollbar

列表视图的默认滚动条显示在右侧。我设计了一种新风格,并希望它与listview控件分开。您在图像中看到的是我现在如何使用混合设置它。

那么如何将自定义滚动条链接到列表视图?我正在使用Blend 4。

列表视图图片位于此处:

http://i141.photobucket.com/albums/r69/thebirdbath/scroll.jpg

2 个答案:

答案 0 :(得分:1)

我不确定您是否要将样式添加到ScrollViewer的{​​{1}}内的Template,或者如果您要禁用ListView并放置ScrollViewer单独ListView中的ScrollViewer

要将Style应用于ScrollViewer中的Template并将ScrollBar放在左侧,您可以在使用{{{}时修改默认Template 1}}。它需要引用 PresentationFramework.Aero

  • GridView上设置FlowDirection="RightToLeft"以将其置于左侧
  • ScrollViewerFlowDirection="LeftToRight"上设置ItemsPresenter,因为他们将继承GridViewHeaderRowPresenter
  • 要获得RightToLeft与内容之间的透明空间,请为ScrollViewer设置Background="Transparent",并在ListView上设置所需的Background < / LI>
  • 使用ItemsPanel控制透明空间,例如Padding

看起来像这样

enter image description here

Padding="0,0,10,0"

答案 1 :(得分:0)

好的,非常接近。它的工作,但我丢失了我的列标题。另外,我无法在条形图和列表视图之间获得透明度。就像酒吧仍然附着,我希望它们看起来像是分开的。 (请参阅我原始图片的链接)

这非常有帮助。几乎就在那里!

我的代码如下。 enter image description here

<ListView
                            AlternationCount="2"
                            Padding="0,0,10,0"
                            Shared:GridViewSort.AutoSort="True"
                            Shared:GridViewSort.ShowSortGlyph="True"
                            ItemsSource="{Binding Contents}" 
                            SelectionMode="Extended" 
                            Background="Transparent" 
                            Foreground="White" 
                            SelectionChanged="ListBoxSelectionChanged"
                            BorderThickness="0"

                            ItemContainerStyle="{DynamicResource ListViewItemStyle}" 
                            Style="{DynamicResource ListViewStyle1}" Margin="0" VerticalAlignment="Top">

                            <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Background="Transparent"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.Template>
        <ControlTemplate TargetType="{x:Type ListView}">
            <MS_Themes:ListBoxChrome x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" SnapsToDevicePixels="true">
                <ScrollViewer Padding="{TemplateBinding Padding}"
                              Style="{DynamicResource ScrollViewerKey}"
                              FlowDirection="RightToLeft">
                    <ScrollViewer.Resources>
                        <Style TargetType="GridViewHeaderRowPresenter">
                            <Setter Property="FlowDirection" Value="LeftToRight"/>
                        </Style>
                    </ScrollViewer.Resources>
                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                    FlowDirection="LeftToRight"/>
                </ScrollViewer>
            </MS_Themes:ListBoxChrome>
            <ControlTemplate.Triggers>
                <Trigger Property="IsGrouping" Value="true">
                    <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ListView.Template>