• [WPF][ListBox]鼠标拖拽多选,(Shift Key、Ctrl Key多选有效)(转)


    <ListBox Name="listBox" SelectionMode="Extended">

        <ListBox.Resources>

            <Style TargetType="{x:Type ListBoxItem}">

                <EventSetter Event="ListBoxItem.PreviewMouseLeftButtonDown" Handler="lbItem_PreviewMouseLeftButtonDown"/>

                <EventSetter Event="ListBoxItem.PreviewMouseUp" Handler="lbItem_PreviewMouseUp"/>

                <EventSetter Event="ListBoxItem.PreviewMouseMove" Handler="lbItem_PreviewMouseMove"/>

            </Style>

        </ListBox.Resources>

        <x:Type TypeName="DependencyObject"/>

        <x:Type TypeName="Visual"/>

        <x:Type TypeName="UIElement"/>

        <x:Type TypeName="FrameworkElement"/>

        <x:Type TypeName="Control"/>

    </ListBox>

    private bool inMouseSelectionMode = false;

    private List<ListBoxItem> selectedItems = new List<ListBoxItem>(); 

    private void lbItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)

    {

        // MouseDown时清空已选Item

        // 同时开始"inMouseSelectionMode"

        foreach (var item in selectedItems)

        {

            item.ClearValue(ListBoxItem.BackgroundProperty);

            item.ClearValue(TextElement.ForegroundProperty);

        }

        selectedItems.Clear();

        inMouseSelectionMode = true;

    }

    private void lbItem_PreviewMouseUp(object sender, MouseButtonEventArgs e)

    {

        // MouseUp时停止"inMouseSelectionMode"

        ListBoxItem mouseUpItem = sender as ListBoxItem;

        inMouseSelectionMode = false;



    private void lbItem_PreviewMouseMove(object sender, MouseEventArgs e)

    {

        ListBoxItem mouseOverItem = sender as ListBoxItem;

        if (mouseOverItem != null && inMouseSelectionMode && e.LeftButton == MouseButtonState.Pressed)

        {

            // Mouse所在的Item设置高亮

            mouseOverItem.Background = SystemColors.HighlightBrush;

            mouseOverItem.SetValue(TextElement.ForegroundProperty, SystemColors.HighlightTextBrush);

            if (!selectedItems.Contains(mouseOverItem)) { selectedItems.Add(mouseOverItem); }

        }

    }

      本文来自ny_dsc的博客,原文地址:http://hi.baidu.com/ny_dsc/blog/item/2bc69a31fdfb3186a8018e9a.html

  • 相关阅读:
    Memcached 笔记与总结(5)Memcached 的普通哈希分布和一致性哈希分布
    大数据价值挖掘:聚焦商业模式探索
    微博商业数据挖掘方法
    微博商业数据挖掘方法
    如何用大数据探索市场营销实践
    如何用大数据探索市场营销实践
    数据挖掘基本任务
    数据挖掘基本任务
    医疗大数据分析深入浅出
    医疗大数据分析深入浅出
  • 原文地址:https://www.cnblogs.com/candyzhmm/p/7119660.html
Copyright © 2020-2023  润新知