实现滚动条位置和选中项对应。
- 效果图
- xaml代码
<Window x:Class="ListView_Scroll.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ListView_Scroll"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="300"
Loaded="Window_Loaded">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView Name="listView" ScrollViewer.HorizontalScrollBarVisibility="Disabled" BorderBrush="Transparent" FontSize="30"/>
<Label Grid.Column="1" Name="label" VerticalAlignment="Center" VerticalContentAlignment="Center"/>
<Slider Grid.Column="1" Name="slider" Minimum="1" Maximum="100" VerticalAlignment="Bottom" Margin="0,0,0,150" ValueChanged="Slider_ValueChanged"/>
</Grid>
</Window>
- 后台代码
using System.Windows;
namespace ListView_Scroll
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = (int)slider.Minimum; i <= (int)slider.Maximum; i++)
{
listView.Items.Add("Item: " + i);
}
}
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (listView.Items.Count == 0)
{
return;
}
int selIndex = (int)slider.Value - 1;
label.Content = "You choose item: " + (selIndex + 1);
listView.SelectedIndex = selIndex;
listView.ScrollIntoView(listView.Items[selIndex]);
}
}
}