none
求解一动画 RRS feed

  • 问题

  • 例如有Listbox

    在里面加入N个ListBoxItem 在没有改变Template的情况下,选中某一个,那么这个ListBoxItem的背景会变成蓝色

    求解,如何实现如下效果

    如果现在选中的是第一个.那个第一个的背景是蓝色的

    现在我要选中第四个.

    这个蓝色的背景需要由第一个的位置开始,滑动经过第二 第三个.到达第四个.

     

    简单示范例如下图.注意蓝色的框,这个是某软件登陆界面.点到哪里那个框就相应控件位置


    Hero
    2011年12月5日 14:34

答案

  • 我觉得你可以放一个Canvas在你的ListBox上面,然后设置这个Canvas的背景颜色是Transparent,并且设置HitTest为false,这样这个透明的Canvas就会不接受任何点击事件。

    接着你放一个Rect在这个Canvas上面,然后根据SelectItem的位置去设置这个Rect在Canvas上面的位置,当SelectionChanged的时候你应用动画在这个Rect上,这样就会实现你说的效果。

    另外你也可以做上面的操作通过AdornerLayer.


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年12月8日 7:04
    版主
  • 我当初做这个效果的时候也是和你说的这样。找一个透明的Grid里面放一个Canvas进行定位移动。但是这个定位必须要符合每个Item当前所在的位置,进行判定。当Item多的时候判定位置就复杂了。我只能做一个鼠标点哪,这个Canvas能的到那个位置并带延迟动画。

    具体参照:http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505332.html 如何创建移动动画。

    2011年12月8日 10:43
  • ???

    2011年12月9日 10:59

全部回复

  • 我觉得你可以放一个Canvas在你的ListBox上面,然后设置这个Canvas的背景颜色是Transparent,并且设置HitTest为false,这样这个透明的Canvas就会不接受任何点击事件。

    接着你放一个Rect在这个Canvas上面,然后根据SelectItem的位置去设置这个Rect在Canvas上面的位置,当SelectionChanged的时候你应用动画在这个Rect上,这样就会实现你说的效果。

    另外你也可以做上面的操作通过AdornerLayer.


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年12月8日 7:04
    版主
  • 我当初做这个效果的时候也是和你说的这样。找一个透明的Grid里面放一个Canvas进行定位移动。但是这个定位必须要符合每个Item当前所在的位置,进行判定。当Item多的时候判定位置就复杂了。我只能做一个鼠标点哪,这个Canvas能的到那个位置并带延迟动画。

    具体参照:http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505332.html 如何创建移动动画。

    2011年12月8日 10:43
  • 既然简单就放个sample出来吧。
    2011年12月9日 3:23
  • 用border不合适
    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年12月9日 8:37
    版主
  • 想追求那个圆角?就Canvas套Border 最简单还好定位。
    2011年12月9日 9:01
  • ???

    2011年12月9日 10:59
  • 我正在尝试做一下。不过你们没看清楼主的问题。人家说的是 ListBoxItem 的背景变成蓝色,不是图片上的那种圆角边框,当然二者原理完全相同。Canvas 没必要,直接用 Grid 就行了。

    在canvas放一个蓝色的Rect,移动这个蓝色的Rect。
    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年12月12日 4:56
    版主
  • 感谢你的sample,相信对其他members会有帮助
    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年12月12日 5:00
    版主
  • 抱歉,一直没有来结贴.抱歉抱歉

     


    Hero
    2011年12月19日 4:08