WPF上下滚动字幕
2021-06-09 23:11
阅读:838
标签:art none sch ble size creat www column ret
原文:WPF上下滚动字幕XAML代码:


local:WorkSpaceContent x:Class="SunCreate.CombatPlatform.Client.NoticeMarquee"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SunCreate.CombatPlatform.Client;assembly=SunCreate.CombatPlatform.Client"
mc:Ignorable="d"
d:DesignHeight="35" d:DesignWidth="300" Loaded="WorkSpaceContent_Loaded" MouseEnter="WorkSpaceContent_MouseEnter" MouseLeave="WorkSpaceContent_MouseLeave">
local:WorkSpaceContent.Resources>
ControlTemplate x:Key="btnTemplate" TargetType="Button">
TextBlock Name="txt" Margin="5 0 5 0" Text="{TemplateBinding Content}" FontSize="12" Cursor="Hand" ToolTip="{TemplateBinding ToolTip}" Foreground="#fff" VerticalAlignment="Center">TextBlock>
ControlTemplate.Triggers>
Trigger Property="IsMouseOver" Value="true">
Setter TargetName="txt" Property="Foreground" Value="#ff5e5e">Setter>
Trigger>
ControlTemplate.Triggers>
ControlTemplate>
Storyboard x:Key="storyboard">
DoubleAnimation Duration="0:0:1" To="25" Storyboard.TargetName="stackPanel" Storyboard.TargetProperty="RenderTransform.Y"/>
Storyboard>
local:WorkSpaceContent.Resources>
Grid Background="#00a6da">
Grid.ColumnDefinitions>
ColumnDefinition Width="60">ColumnDefinition>
ColumnDefinition>ColumnDefinition>
Grid.ColumnDefinitions>
TextBlock Margin="15 0 5 0" Text="公告:" FontSize="12" Foreground="#ffff33" VerticalAlignment="Center">TextBlock>
ScrollViewer Grid.Column="1" Name="scrollViewer" HorizontalScrollBarVisibility="Hidden"
HorizontalContentAlignment="Stretch"
VerticalScrollBarVisibility="Hidden"
VerticalContentAlignment="Stretch" Height="25">
Border Height="25" >
StackPanel x:Name="stackPanel" Margin="0 -25 0 0" >
StackPanel.RenderTransform>
TranslateTransform />
StackPanel.RenderTransform>
Button Name="btn1" Height="25" Click="btn_Click" Template="{StaticResource btnTemplate}">Button>
Button Name="btn2" Height="25" Click="btn_Click" Template="{StaticResource btnTemplate}">Button>
Button Name="btn3" Height="25" Click="btn_Click" Template="{StaticResource btnTemplate}">Button>
StackPanel>
Border>
ScrollViewer>
Grid>
local:WorkSpaceContent>
后台代码:


using SunCreate.CombatPlatform.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Timers; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace SunCreate.CombatPlatform.Client { ////// 公告滚动显示 /// public partial class NoticeMarquee : WorkSpaceContent { private System.Timers.Timer _timer; private List _data; private int _index; private Storyboard _storyboard; public NoticeMarquee() { InitializeComponent(); } private void WorkSpaceContent_Loaded(object sender, RoutedEventArgs e) { if (_timer == null) { _storyboard = (Storyboard)this.FindResource("storyboard"); System.Threading.Tasks.Task.Factory.StartNew(() => { while (true) { int total = 0; _data = HI.Get ().GetListPage(null, DateTime.MinValue, DateTime.Now, 1, 3, ref total).ToList(); _data.Reverse(); _index = _data.Count - 1; Dispatcher.BeginInvoke(new Action(() => { stackPanel.RenderTransform = new TranslateTransform(0, 25); })); ShowData(); Thread.Sleep(60 * 1000); } }); _timer = new System.Timers.Timer(); _timer.Interval = 5000; _timer.Elapsed += Action; _timer.Start(); } } private void Action(object sender, ElapsedEventArgs e) { Dispatcher.BeginInvoke(new Action(() => { stackPanel.RenderTransform = new TranslateTransform(0, 0); _storyboard.Begin(); })); _index--; if (_index 0) { _index = _data.Count - 1; } ShowData(); } private void ShowData() { Dispatcher.BeginInvoke(new Action(() => { TES_NOTICE data1 = GetData(_index, 0); TES_NOTICE data2 = GetData(_index, 1); TES_NOTICE data3 = GetData(_index, 2); if (data1 != null) { btn1.Content = data1.NOTICE_CONTENT.Trim().Replace("\r\n", string.Empty); btn1.CommandParameter = data1.ID; btn1.ToolTip = data1.NOTICE_CONTENT; } if (data2 != null) { btn2.Content = data2.NOTICE_CONTENT.Trim().Replace("\r\n", string.Empty); btn2.CommandParameter = data2.ID; btn2.ToolTip = data2.NOTICE_CONTENT; } if (data3 != null) { btn3.Content = data3.NOTICE_CONTENT.Trim().Replace("\r\n", string.Empty); btn3.CommandParameter = data3.ID; btn3.ToolTip = data3.NOTICE_CONTENT; } })); } private TES_NOTICE GetData(int index, int n) { if (_data != null) { int i = index + n; if (i > _data.Count - 1) { i = i % _data.Count; } return _data[i]; } return null; } private void WorkSpaceContent_MouseEnter(object sender, MouseEventArgs e) { _timer.Stop(); } private void WorkSpaceContent_MouseLeave(object sender, MouseEventArgs e) { _timer.Start(); } private void btn_Click(object sender, RoutedEventArgs e) { Button btn = e.Source as Button; string dataId = btn.CommandParameter.ToString(); NoticeView noticeView = new NoticeView(dataId); noticeView.WindowStartupLocation = WindowStartupLocation.CenterScreen; noticeView.ShowDialog(); } } }
效果图:
WPF上下滚动字幕
标签:art none sch ble size creat www column ret
原文地址:https://www.cnblogs.com/lonelyxmas/p/10641791.html
评论
亲,登录后才可以留言!