在WPF中使用VerticalScroll和圆角创建ListView

时间:2015-01-26 12:25:53

标签: c# wpf listview

我有一个listview,我用xml文件填充数据。 我希望这个列表有一个滚动和圆角,当我填充它可以显示的更多元素时,滚动会自动出现:

ListView x:Name="Scent_Edit" SelectionMode="Single" Height="283" Margin="0,7,0,0" SelectedIndex="{Binding CurrentDelete, Mode=OneWayToSource}" SelectedItem="{Binding ToDelete, Mode=OneWayToSource}" IsEnabled="{Binding EditEnabled}">             
        </ListView>

Scroll, no round corners

但是如果我添加代码以获得圆角滚动永远不会出现:

ListView x:Name="Scent_Edit" SelectionMode="Single" Height="283" Margin="0,7,0,0" SelectedIndex="{Binding CurrentDelete, Mode=OneWayToSource}" SelectedItem="{Binding ToDelete, Mode=OneWayToSource}" IsEnabled="{Binding EditEnabled}">
            <ListView.Template>
                <ControlTemplate>
                    <Border CornerRadius="4" BorderThickness="1" BorderBrush="Black">
                        <ItemsPresenter></ItemsPresenter>
                    </Border>
                </ControlTemplate>
            </ListView.Template>
        </ListView>

No scroll, round corners

有没有办法在列表视图上同时滚动和滚动角落?

提前致谢

1 个答案:

答案 0 :(得分:6)

ScrollViewer是默认模板的一部分。 ItemsPresenter仅包含所有项目的ItemsPanel。它不包括ScrollViewer。如果您更改Template并需要滚动,则需要手动添加

<ListView x:Name="Scent_Edit" ...>
   <ListView.Template>
      <ControlTemplate TargetType="{x:Type ListView}">
         <Border CornerRadius="4" BorderThickness="1" BorderBrush="Black">
            <ScrollViewer>
               <ItemsPresenter/>
            </ScrollViewer>
         </Border>
      </ControlTemplate>
   </ListView.Template>
</ListView>