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