当前位置: 代码迷 >> Silverlight >> 在SL/WPF中实现列表的滚动显示解决办法
  详细解决方案

在SL/WPF中实现列表的滚动显示解决办法

热度:4522   发布时间:2013-02-26 00:00:00.0
在SL/WPF中实现列表的滚动显示
以前是做ASP.NET网页开发的,在页面上需要实现列表的滚动显示时间常用JS轻松的完成了,但在WPF中却很难,我尝试过用listbox,但有两个问题,
一是滚动用生硬(一跳一跳的,而且样式不好控制),
二是,我想单击标题弹出内容,我用listbox的selectionChange事件完成,但单击后item是选中状态,需要再点一次之后,才能激动事件....

希望前辈帮忙给个思路,如果有示例代码就最好,我就是想实现一个新闻列表的滚动显示,并能单击新闻标题弹出新闻内容的功能,感谢各位了
------解决方案--------------------------------------------------------
在XAML里:
<StackPanel Name="spScrollNews" Orientation="Horizontal" HorizontalAlignment="Left">
                <!--等待动态添加-->
   </StackPanel>

在C#里:

  private System.Windows.Threading.DispatcherTimer dt = new DispatcherTimer();
        private int scrollNewsSwidth=2;
   
         private void LoadNews()
            {

                IQueryable<dms_News> importantNews  = rp.GetAllNews(true).Take(15); ;
                IQueryable<dms_News> normalNews = rp.GetAllNews(false).Take(15);
  
                for(int i=1;i<16;i++)
                {
                    showImportantNews(importantNews, i);
                    showNormalNews(normalNews, i);
                }
             //让最新(修改)的一普通新闻内容在顶部滚动
                showScrollNews(normalNews);
                spScrollNews.Width = scrollNewsSwidth;
                spScrollNews.Margin = new Thickness(this.Width, 0, 0, 0);
             //滚动开始
                dt.Interval = TimeSpan.FromMilliseconds(100);
                dt.Tick += new EventHandler(dt_Tick);
                dt.Start();
            }

         private void showScrollNews(IQueryable<dms_News> normalNews)
         {
             var firstNews = normalNews.FirstOrDefault();
             System.IO.StringReader sr = new System.IO.StringReader(firstNews.Content);
             System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sr);
             FlowDocument fd = (FlowDocument)System.Windows.Markup.XamlReader.Load(xr);
  相关解决方案