【问题标题】:WPF ListView Show selected itemWPF ListView 显示所选项目
【发布时间】:2010-11-12 00:04:54
【问题描述】:

我想在列表视图中自动显示所选项目(不滚动就不可能显示所有项目)。

this.listView.SelectedIndex = 999;当然选择了一个项目,但它没有显示它。

我可以用什么来自动显示它?

亲切的问候,杰夫

【问题讨论】:

    标签: wpf listview selecteditem


    【解决方案1】:

    你可以这样做:-

    listview.ScrollIntoView(listview.SelectedItem);

    Scroll WPF ListBox to the SelectedItem set in code in a view model

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        安装一个nuget包System.Windows.Interactivity.WPF,创建如下类:

        public class ScrollToSelectedListBoxItemBehaviour: 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]);
            }
        }
        

        将此行为类添加到 xaml:

        <ListView ItemsSource="{Binding Items}">
            <i:Interaction.Behaviors>
                <behaviors:ScrollToSelectedListBoxItemBehaviour />
            </i:Interaction.Behaviors>
        </ListView>
        

        【讨论】:

          【解决方案4】:

          这可能会对您有所帮助,我不确定它是否是您要查找的内容,但它会显示所选项目并在必要时为您滚动到该项目。

           int selectedIndex = listView.Items.IndexOf((listView.SelectedItems[0]))
          
           listView.Items[selectedIndex].EnsureVisible();
          

          【讨论】:

          • 这是一个WinForms方法,不是吗!
          猜你喜欢
          • 2011-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-17
          • 2017-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多