【问题标题】:.NET ListBox - Disable selecting items on mouse over.NET ListBox - 在鼠标悬停时禁用选择项目
【发布时间】:2012-04-30 13:08:33
【问题描述】:

我有一个单选模式的 ListBox,其中包含一些项目。我实现了用户能够通过拖放重新排序项目。一切正常,但它看起来真的很难看,因为如果鼠标按钮按下并且光标在一个项目上移动,列表框会自动选择一个项目。

具体来说: 为了在某​​些情况下禁用闪烁,我仅在将项目拖动到另一个项目的一半以上时才移动项目。当我开始将 item1 拖到 item2 上以将其放在 item2 后面时,我希望在拖动时选择 item1。发生的情况是,只要光标移到 item2 上, item2 就会被选中。我怎样才能摆脱这种行为?

我已经尝试在拖动项目时在 PreviewMouseMove 中设置 e.Handled = true,但这无济于事。

如果您想查看代码,请点击此处:http://pastebin.com/GTj96qV9。这是一种行为,它使任何将 IList 作为 DataSource 的列表框都可以通过拖动对其内容进行重新排序。

【问题讨论】:

    标签: c# wpf xaml listbox selection


    【解决方案1】:

    对我来说最干净的解决方案是从 ItemsControl 继承并实现我自己的“选择器”。

    【讨论】:

      【解决方案2】:

      这可能会搞砸放置部分,但您是否尝试过让 ListBoxItem 鼠标捕获? MSDN 有more details about this

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        这是一个列表视图。而且我没有详细介绍您的代码。但是我在 ListViewItem 上做了 PreviewMouseLeftButtonDown,我没有你描述的问题。

         <ListView.ItemContainerStyle>
                    <Style TargetType="{x:Type ListViewItem}">
                        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListView1Item_PreviewMouseLeftButtonDown" />
                        <Setter Property="AllowDrop" Value="True" />
                        <EventSetter Event="DragDrop.Drop" Handler="ListView1Item_DragDrop" />
                        <Style.Triggers>                     
                            <DataTrigger Binding="{Binding DispDetail}" Value="False">
                                <Setter Property="Visibility" Value="Collapsed"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </ListView.ItemContainerStyle>      
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          • 1970-01-01
          • 2016-12-30
          相关资源
          最近更新 更多