none
listbox 拖拽问题 RRS feed

  • 问题

  • 我想把一个listbox的item通过鼠标拖拽到一个canvas里面,我一开始用previewmousedown将listbox的selecteditem传过去(用dodragdrop),可是会有一个问题,就是当我鼠标按下的时候,并不是选择了这个item,所以传过去 的往往是上次selectitem,而不是当前鼠标点击项。

    我想问下,在我点击listbox 的item的时候,如何提取此item的内容?(我的一个item是一个类,内含两个字符串)

    2012年10月25日 3:10

答案

  • 额,我取巧了个办法,我在listbox上加了两个事件:1.previewmousedown;2.selectionchanged 。

    在previewmousedown事件中将selecteditem = null;

    在selectionchanged 中将

    if(e.addeditems.count!=0)

    {

    dodragdrop(...);

    }

    这样我点击item的时候,先响应previewmousedown,将selecteditem 变成null,然后触发selectionchanged

    • 已标记为答案 路小妖YY 2012年10月26日 8:19
    2012年10月26日 8:18

全部回复

  • SelectedItem.Content.ToString


    • 已编辑 仁虎 2012年10月25日 3:27 xiug
    2012年10月25日 3:23
  • 这位大哥你没看清楚哦,我用previewmousedown将listbox的selecteditem传过去(用dodragdrop),但是当我鼠标按下的时候,并不是选择了这个item,所以传过去 的往往是上次selectitem,而不是当前鼠标点击项,所以你说的

    SelectedItem.Content.ToString肯定不行啊,因为我把鼠标点击事件放在listbox上,所以我点击以后获得的sender是listbox而不是item,可是我的item是item template,不能放鼠标事件,或者大家有什么方法能在点击之后选取我的item?

    2012年10月25日 4:55
  • 额,我取巧了个办法,我在listbox上加了两个事件:1.previewmousedown;2.selectionchanged 。

    在previewmousedown事件中将selecteditem = null;

    在selectionchanged 中将

    if(e.addeditems.count!=0)

    {

    dodragdrop(...);

    }

    这样我点击item的时候,先响应previewmousedown,将selecteditem 变成null,然后触发selectionchanged

    • 已标记为答案 路小妖YY 2012年10月26日 8:19
    2012年10月26日 8:18