silverlight 实时更新 marquee效果
<Canvas x:Name="canMain" Background="Transparent" Cursor="Hand" >
??????????????? <Canvas.Clip>
??????????????????? <!--???定一個(gè)循環(huán)滾動(dòng)的區(qū)域? -->
??????????????????? <RectangleGeometry x:Name="myRectangleGeometry" RadiusX="0" RadiusY="0" Rect="0,0, 340,50" />
??????????????? </Canvas.Clip>
??????????????? <Canvas.Triggers>
??????????????????? <EventTrigger RoutedEvent="Canvas.Loaded" >
??????????????????????? <BeginStoryboard>
<!--??Canvas.Top :說(shuō)明從下到上或者從上到下滾動(dòng)?,?RepeatBehavior="Forever" 為循環(huán)方式-->
??????????????????????????? <Storyboard x:Name="animation" Storyboard.TargetProperty="(Canvas.Top)" RepeatBehavior="Forever" >
??????????????????????????????? <DoubleAnimation x:Name="daOne" Storyboard.TargetName="spScrollTwo" From="0" To="0" Duration="0:0:10"? />
??????????????????????????????? <DoubleAnimation x:Name="daTwo" Storyboard.TargetName="spScrollOne" From="0" To="0" Duration="0:0:10"? />
??????????????????????????? </Storyboard>
??????????????????????? </BeginStoryboard>
??????????????????? </EventTrigger>
??????????????? </Canvas.Triggers>
??????????????? <StackPanel x:Name="spScrollOne" Orientation="Vertical"></StackPanel> >//要滾動(dòng)的集合一
??????????????? <StackPanel x:Name="spScrollTwo" Orientation="Vertical"></StackPanel>//要滾動(dòng)的集合二
??????????? </Canvas>
// 這里我采用的是后臺(tái)動(dòng)態(tài)賦值:
public partial class testScroll: UserControl
??? {
???????? // 信息條數(shù)
??????? int icount = 0;
? // 信息顯示高度
??????? Double iRoadInforMation = 0;
??????? public testScroll()
??????? {
??????????? InitializeComponent();
??????????? this.Loaded += new RoutedEventHandler(testScroll_Loaded);
??????? }
?
??????? #region 頁(yè)面初始化方法
??????? /// <summary>
??????? /// 頁(yè)面初始化方法
??????? /// </summary>
??????? /// <param name="sender"></param>
??????? /// <param name="e"></param>
??????? void testScroll_Loaded(object sender, RoutedEventArgs e)
??????? {
??????????? //動(dòng)態(tài)獲取數(shù)據(jù)
??????????? getDataInfor();
??????? DispatcherTimer dt;
??????????? //定義計(jì)時(shí)器? ?????
??????????? dt = new DispatcherTimer()
??????????? {
??????????????? Interval = TimeSpan.FromMinutes(3)
??????????? };
??????????? dt.Tick += (sen, sec) =>
??????????? {
??????????????? getDataInfor();
??????????? };
??????????? dt.Start();
??????? }
??????? #endregion
?
?#region 獲得信息
??????? /// <summary>
??????? /// 獲得信息
??????? /// </summary>
??????? private void getDataInfor()
??????? {
??????????????? ......? ......... // 連接數(shù)據(jù)庫(kù)
???????????????? //? 返回成功信息
??????????????? if (r.IsSucceed)
??????????????? {
??????????????????? //? 定義實(shí)體類的集合
???????????????????? List<R_Infor> ?_Data_InforList = r.Body.FromJsonString<List<R_Infor>>();
??????????????????? //? 判斷返回查詢結(jié)果
??????????????????? if (null != _Data_InforList && 0 < _Data_InforList .Count)
??????????????????? {
??????????????????????? //? 根據(jù)查詢信息給頁(yè)面賦值
??????????????????????? foreach (var _Infor in_Data_InforList )
??????????????????????? {
??????????????????????????? double _fontsize = 15;
??????????????????????????? ++icount;
??????????????????????????? // 定義頁(yè)面滾動(dòng)顯示信息容器
??????????????????????????? var tbInforOne = new TextBlock();
??????????????????????????? // 設(shè)定顯示信息的樣式信息
??????????????????????????? tbInforOne .Text = icount + ". " +??_Infor .nayiyaou(); //描述內(nèi)容
??????????????????????????? tbInforOne .Tag =Infor .ID();//內(nèi)容ID
??????????????????????????? tbInforOne .FontSize = _fontsize;
??????????????????????????? tbInforOne .LineHeight = _fontsize;
??????????????????????????? tbInforOne .TextWrapping = TextWrapping.Wrap; //自動(dòng)換行
??????????????????????????? tbInforOne .Margin = new Thickness(3, 4, 3, 3); //位置
??????????????????????????? tbInforOne .Width = (double)325; //顯示寬度
???????????????????????????? spScrollOne.Children.Add(tbTraInforOne); //顯示添加上前臺(tái)控件
??????????????????????????? iRoadInforMation += (tbInforOne .ActualHeight + 7); //獲得實(shí)際顯示高度
??????????????????????????? // 定義頁(yè)面滾動(dòng)顯示信息容器
??????????????????????????? var tbInforTwo = new TextBlock();
?????????????????????????????tbInforTwo .Text = icount + ". " +??_Infor .nayiyaou(); //描述內(nèi)容
??????????????????????????? tbInforTwo .Tag =Infor .ID();//內(nèi)容ID
??????????????????????????? tbInforTwo .FontSize = _fontsize;
??????????????????????????? tbInforTwo .LineHeight = _fontsize;
??????????????????????????? tbInforTwo .TextWrapping = TextWrapping.Wrap; //自動(dòng)換行
??????????????????????????? tbInforOne .Margin = new Thickness(3, 4, 3, 3); //位置
??????????????????????????? tbInforTwo .Width = (double)325; //顯示寬度
?????????????????????????????? spScrollTwo.Children.Add(tbTraInforTwo);
??????????????????????? }
??????????????????????? setScrolltt();
??????????????????? }
??????????????? }
??????????? };
??????????? _Do.Post();
??????? }
??????? #endregion
?
?#region 設(shè)置滾動(dòng)信息
??????? /// <summary>
??????? /// 設(shè)置滾動(dòng)信息
??????? /// </summary>
??????? private void setScrolltt()
??????? {
??????????? iRoadInforMation = iRoadInforMation + 10;
??????????? myRectangleGeometry.Rect = new Rect(0, 0, 340, iRoadInforMation);
??????????? // 控制滾動(dòng)信息速度
??????????? int _marqueeTimeInSeconds = Convert.ToInt32(icount * 1.5);
??????????? spScrollOne.Height = iRoadInforMation;
??????????? spScrollTwo.Height = iRoadInforMation;
??????????? daOne.To = -iRoadInforMation;
??????????? daOne.Duration = new Duration(TimeSpan.FromSeconds(_marqueeTimeInSeconds));
??????????? daTwo.From = iRoadInforMation;
??????????? daTwo.Duration = new Duration(TimeSpan.FromSeconds(_marqueeTimeInSeconds));
???? animation.Begin();
??????????? // 判斷是否定制滾動(dòng)信息
??????????? if (canMain.ActualHeight >= spScrollOne.Height)
??????????? {
??????????????? animation.Stop();
??????????????? return;
??????????? }
??????? }
??????? #endregion
困擾了我?guī)滋煳液痛蠹曳窒硐?
轉(zhuǎn)載于:https://www.cnblogs.com/northeastTycoon/archive/2011/11/30/2269444.html
總結(jié)
以上是生活随笔為你收集整理的silverlight 实时更新 marquee效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java实现的简单的WebService
- 下一篇: make的常见错误信息