我希望能够自动显示列表视图中所选项(如果不滚动,无法显示所有项)。
this.listView.SelectedIndex = 999;
当然可以选择一个项目,但它并不会显示出来。
我应该使用什么方法才能自动显示所选项?
谢谢,Jeff
我希望能够自动显示列表视图中所选项(如果不滚动,无法显示所有项)。
this.listView.SelectedIndex = 999;
当然可以选择一个项目,但它并不会显示出来。
我应该使用什么方法才能自动显示所选项?
谢谢,Jeff
listview.ScrollIntoView(listview.SelectedItem);
2023年.NET 5-7更新
安装一个nuget包Microsoft.Xaml.Behaviors.Wpf,创建一个如下的类:
using Microsoft.Xaml.Behaviors;
using System.Windows.Controls;
using System.Windows;
public class ScrollToSelectedListBoxItemBehavior: Behavior<ListBox>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SelectionChanged += AssociatedObjectOnSelectionChanged;
AssociatedObject.IsVisibleChanged += AssociatedObjectOnIsVisibleChanged;
}
protected override void OnDetaching()
{
AssociatedObject.SelectionChanged -= AssociatedObjectOnSelectionChanged;
AssociatedObject.IsVisibleChanged -= AssociatedObjectOnIsVisibleChanged;
base.OnDetaching();
}
private static void AssociatedObjectOnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
ScrollIntoFirstSelectedItem(sender);
}
private static void AssociatedObjectOnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
ScrollIntoFirstSelectedItem(sender);
}
private static void ScrollIntoFirstSelectedItem(object sender)
{
if (!(sender is ListBox listBox))
return;
var selectedItems = listBox.SelectedItems;
if (selectedItems.Count > 0)
listBox.ScrollIntoView(selectedItems[0]);
}
}
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
ListView
控件中:<ListView ItemsSource="{Binding Items}">
<i:Interaction.Behaviors>
<local:ScrollToSelectedListBoxItemBehavior />
</i:Interaction.Behaviors>
</ListView>
这可能会对你有所帮助,我不确定它是否是你在寻找的,但如果需要,它会将选定的项目带入视图并为您滚动到该位置。
int selectedIndex = listView.Items.IndexOf((listView.SelectedItems[0]))
listView.Items[selectedIndex].EnsureVisible();
Microsoft.Xaml.Behaviors.Wpf
,因为System.Windows.Interactivity.WPF
已经被弃用了。 - Skint007