繁体   English   中英

WPF-选定项目时滚动列表框

[英]WPF - Listbox scrolling when an item is selected

当前,我有一个ListBox用于执行拖放操作。 这样做确实会发生错误,如果选择了列表中的某个项目,则用户无法在其光标单击时使用垂直滚动条。 用户只能使用鼠标滚轮移动此滚动条。

据我了解,我认为它试图将滚动条计为SelectedItem ,这也许就是为什么它不能正确移动的原因,但是我仍然不确定为什么会发生这种情况。下面是相关代码,任何有关解决此问题的帮助问题将不胜感激。

XAML

<ListBox x:Name="WriteListBox"
           Height="326"
           Width="190"
           HorizontalAlignment="Left"
           VerticalAlignment="Top"
           Margin="428,25,0,0"
           ScrollViewer.HorizontalScrollBarVisibility="Disabled"
           ScrollViewer.VerticalScrollBarVisibility="Auto"
           PreviewMouseLeftButtonDown="ListBox_PreviewMouseLeftButtonDown"
           PreviewMouseMove="ListBox_PreviewMouseMove"
           ItemTemplate="{StaticResource ModelVariableWriteTemplate}" />

代码隐藏

private void ListBox_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    this.mousePoint = e.GetPosition(null);
}

private void ListBox_PreviewMouseMove(object sender, MouseEventArgs e)
{
    Point newPoint = e.GetPosition(null);
    Vector diff = this.mousePoint - newPoint;

    ListBox listBox = sender as ListBox;
    var listBoxItem = listBox.SelectedItem;

    if (e.LeftButton == MouseButtonState.Pressed)
    {
        ///Drag/Drop stuff here.
    }
}

ScrollViewer是ListBox的一部分,它是ListBox_PreviewMouseMove的发送对象。 我认为使ListBoxItem成为发送者,而不是ListBox,应该从该事件中删除ScrollViewer。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM