C# 如何在silverlight中制作垂直股票代码?

C# 如何在silverlight中制作垂直股票代码?,c#,.net,wpf,silverlight,C#,.net,Wpf,Silverlight,我有一个项目列表,我想慢慢垂直滚动,直到鼠标悬停在项目列表上。然后,将出现一个滚动条。我一直坚持的部分是让列表不断循环的最佳方式。因此,如果你有: ----- A B C D E ----- 它将滚动并显示如下内容: ---- D E A B C ---- ObservableCollection<string> myList; public MainPage() { InitializeComponent(); myLis

我有一个项目列表,我想慢慢垂直滚动,直到鼠标悬停在项目列表上。然后,将出现一个滚动条。我一直坚持的部分是让列表不断循环的最佳方式。因此,如果你有:

-----
A
B
C
D
E
-----
它将滚动并显示如下内容:

----
D
E
A
B
C
----
    ObservableCollection<string> myList;
    public MainPage()
    {
        InitializeComponent();
        myList = new ObservableCollection<string>();
        myList.Add("A");
        myList.Add("B");
        myList.Add("C");
        myList.Add("D");
        myList.Add("E");

        System.Threading.Timer t = new System.Threading.Timer(new System.Threading.TimerCallback(TimerFired));
        t.Change(500, 500);

        listBox2.ItemsSource = myList ;          
    }

    private void TimerFired(object sender)
    {
        Pop();
    }
    private delegate void PopDelegate();
    private void Pop()
    {
        if (this.Dispatcher.CheckAccess())
        {
            string item = myList[myList.Count - 1];
            myList.RemoveAt(myList.Count - 1);
            myList.Insert(0, item);

        }
        else
        {
            this.Dispatcher.BeginInvoke(new PopDelegate(Pop), null);
        }
    }

有没有一种方法可以让我在没有两个收藏的情况下做到这一点?

您可以这样做:

----
D
E
A
B
C
----
    ObservableCollection<string> myList;
    public MainPage()
    {
        InitializeComponent();
        myList = new ObservableCollection<string>();
        myList.Add("A");
        myList.Add("B");
        myList.Add("C");
        myList.Add("D");
        myList.Add("E");

        System.Threading.Timer t = new System.Threading.Timer(new System.Threading.TimerCallback(TimerFired));
        t.Change(500, 500);

        listBox2.ItemsSource = myList ;          
    }

    private void TimerFired(object sender)
    {
        Pop();
    }
    private delegate void PopDelegate();
    private void Pop()
    {
        if (this.Dispatcher.CheckAccess())
        {
            string item = myList[myList.Count - 1];
            myList.RemoveAt(myList.Count - 1);
            myList.Insert(0, item);

        }
        else
        {
            this.Dispatcher.BeginInvoke(new PopDelegate(Pop), null);
        }
    }
observedcollection myList;
公共主页()
{
初始化组件();
myList=新的ObservableCollection();
myList.添加(“A”);
myList.添加(“B”);
myList.添加(“C”);
myList.添加(“D”);
myList.添加(“E”);
System.Threading.Timer t=新的System.Threading.Timer(新的System.Threading.TimerCallback(TimerFired));
t、 变更(500500);
listBox2.ItemsSource=myList;
}
private void TimerFired(对象发送方)
{
Pop();
}
私有委托void PopDelegate();
私有void Pop()
{
if(this.Dispatcher.CheckAccess())
{
string item=myList[myList.Count-1];
myList.RemoveAt(myList.Count-1);
myList.Insert(0,项目);
}
其他的
{
this.Dispatcher.BeginInvoke(新的POPDegate(Pop),null);
}
}

有趣的想法。查看您的代码,而不是滚动,您只是对列表重新排序。然而,我试图做一个更流畅的滚动运动。不过谢谢。也许像这样的东西会对你有帮助?