首页 > IT职业 > IT生活 > sliverlight:按点击移动的连续跑马灯
思路:
1.利用StoryBoard产生移动,每次点击时,该动画播放一次(即移动一格)
2.关键:动画播放完毕后,调用Stop方法,以回到初始位置,同时利用代码重新填充数据,造成"保留移动后位置"的视觉假象
Xaml代码:
Xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Xaml.cs
Xaml.cs
1
using System;
2
using System.Collections.Generic;
3
using System.Windows.Controls;
4
using System.Windows.Media;
5
6
namespace ClipTest
7

{
8
public partial class Marquee : UserControl
9
{
10
11
public List
12
13
int _currentIndex = 0;//初次加载时,从listSrc的第几项开始
14
15
public Marquee()
16
{
17
InitializeComponent();
18
this.sb_move.Completed += new EventHandler(sb_move_Completed);
19
LoadData();
20
SetData();
21
}
22
23
24 ///
25
/// 加载源数据(需要调用外部数据的朋友,可自行修改本函数为远程加载xml之类)
26
///
27
public void LoadData()
28
{
29
this.listSrc = new List
30 this.listSrc.Add(new MarqueeItem()
{ ItemColor = Color.FromArgb(0xFF, 0x9A, 0xCD, 0x32), ItemText = "1" });
31 this.listSrc.Add(new MarqueeItem()
{ ItemColor = Color.FromArgb(0xFF, 0xFF, 0xFF, 0x00), ItemText = "2" });
32 this.listSrc.Add(new MarqueeItem()
{ ItemColor = Color.FromArgb(0xFF, 0xF5, 0xF5, 0xF5), ItemText = "3" });
33 this.listSrc.Add(new MarqueeItem()
{ ItemColor = Color.FromArgb(0xFF, 0xF5, 0xF5, 0xDC), ItemText = "4" });
34 this.listSrc.Add(new MarqueeItem()
{ ItemColor = Color.FromArgb(0xFF, 0xFF, 0x20, 0xFF), ItemText = "5" });
35
}
36
37
38
public void SetData()
39
{
40
int _start = _currentIndex % listSrc.Count;
41
42
for (int i = 1; i 43
{
44 if (_start >= listSrc.Count)
{ _start = 0; }
45
(c.FindName("b" + i.ToString()) as Border).Background = new SolidColorBrush(listSrc[_start].ItemColor);
46
(c.FindName("txt" + i.ToString()) as TextBlock).Text = listSrc[_start].ItemText;
47
_start++;
48
}
49
}
50
51
void sb_move_Completed(object sender, EventArgs e)
52
{
53
54
this.sb_move.Stop();
55
_currentIndex++;
56
SetData();
57
58
}
59
60
private void Canvas_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
61
{
62
// TODO: Add event handler implementation here.
63
this.sb_move.Begin();
64
}
65
}
66
67
68 ///
69
/// 自定义Item类
70
///
71
public class MarqueeItem
72
{
73 public Color ItemColor
{ set; get; }
74 public String ItemText
{ set; get; }
75
}
76
77
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2752/viewspace-2801285/ ,如需转载,请注明出处,否则将追究法律责任。