添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
/// 构造函数
/// </summary>
public UIScrollingLabel(double m_Width, double m_Height,string m_Text)
this.Width = m_Width;
this.Height = m_Height;
MarqueeTimer.Interval = _RunSpeed;//文字移动的速度
MarqueeTimer.Enabled = false ;      //开启定时触发事件
MarqueeTimer.Elapsed += new ElapsedEventHandler(MarqueeTimer_Elapsed);//绑定定时事件
this.Loaded += new RoutedEventHandler(ScrollingTextControl_Loaded);//绑定控件Loaded事件
this.TargetUpdated += UIScrollingLabel_TargetUpdated;//绑定使用数据绑定方式修改Content后的响应事件,即判断是否开启滚动定时器
private void UIScrollingLabel_TargetUpdated(object sender, System.Windows.Data.DataTransferEventArgs e)
TextSource = this.Content.ToString() ;
if (GetTextDisplayWidthHelper.GetTextDisplayWidth(this) > this.Width)
MarqueeTimer.Enabled = true;
MarqueeTimer.Enabled = false;
void ScrollingTextControl_Loaded(object sender, RoutedEventArgs e)
_TextSource = SetContent;
_TempString = _TextSource + "   ";
_OutText = _TempString;
_SignTime = DateTime.Now;
void MarqueeTimer_Elapsed(object sender, ElapsedEventArgs e)
if (string.IsNullOrEmpty(_OutText)) return;


if (_OutText.Substring(1) + _OutText[0] == _TempString)
if (_IfFirst)
_SignTime = DateTime.Now;
if ((DateTime.Now - _SignTime).TotalMilliseconds > _StopSecond)
_IfFirst = true;
_IfFirst = false;
return;
_OutText = _OutText.Substring(1) + _OutText[0];




Dispatcher.BeginInvoke(new Action(() =>
SetContent = _OutText;
/// <summary>
/// 定时器
/// </summary>
Timer MarqueeTimer = new Timer();
/// <summary>
/// 滚动文字源
/// </summary>
String _TextSource = "";
/// <summary>
/// 输出文本
/// </summary>
String _OutText = string.Empty;
/// <summary>
/// 过度文本存储
/// </summary>
string _TempString = string.Empty;
/// <summary>
/// 文字的滚动速度
/// </summary>
double _RunSpeed = 200;


DateTime _SignTime;
bool _IfFirst = true;


/// <summary>
/// 滚动一循环字幕停留的秒数,单位为毫秒,默认值停留3秒
/// </summary>
int _StopSecond = 3000;

其中需要判断文本的显示长度,故实现了一个测量文本长度的工具类:

using System;
using System.Windows;
using System.Windows.Media;
using System.Globalization;
using System.Windows.Controls;


namespace Tool
static class GetTextDisplayWidthHelper
public static Double GetTextDisplayWidth(Label label)
return GetTextDisplayWidth(label.Content.ToString(), label.FontFamily, label.FontStyle, label.FontWeight, label.FontStretch, label.FontSize);
public static Double GetTextDisplayWidth(string str, FontFamily fontFamily, FontStyle fontStyle, FontWeight fontWeight, FontStretch fontStretch,double FontSize)
var formattedText = new FormattedText(
CultureInfo.CurrentUICulture,
FlowDirection.LeftToRight,
new Typeface(fontFamily, fontStyle, fontWeight, fontStretch),
FontSize,
Brushes.Black
Size size = new Size(formattedText.Width, formattedText.Height);
return size.Width;

参考 ﹎蓝言觅ぷ雨 的文章,连接:http://www.cnblogs.com/lanymy/archive/2012/07/11/2586643.html  表示感谢

WPF实现强大的动态公式计算
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题。本文就探讨一下如何在WPF中实现一种基于行字段的动态公式计算。
C# WPF上位机实现和下位机TCP通讯下位机使用北京大华程控电源DH1766-1,上位机使用WPF。实现了电压电流实时采集,曲线显示。上午在公司调试成功,手头没有程控电源,使用TCP服务端模拟。昨天写的TCP服务端正好排上用场。
原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来。如果数据量很大,2000条数据,一次性显示在一个页面中,不仅消耗资源,而且用户体验也很糟糕。
这篇博客将分享在WPF中如何创建一个带Title的TextBox。首先请看一下最终的效果, 实现思路:使用TextBlock+TextBox来实现,TextBlock用来显示Title。
原文:WPF MVVM模式下实现ListView下拉显示更多内容 在手机App中,如果有一个展示信息的列表,通常会展示很少一部分,当用户滑动到列表底部时,再加载更多内容。这样有两个好处,提高程序性能,减少网络流量。
原文:WPF中实现多选ComboBox控件 在WPF中实现带CheckBox的ComboBox控件,让ComboBox控件可以支持多选。 将ComboBox的ItemsSource属性Binding到一个Book的集合, public class Book 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Vblegend_2013/article/details/83447420
原文:在WPF中实现平滑滚动 WPF实现滚动条还是比较方便的,只要在控件外围加上ScrollViewer即可,但美中不足的是:滚动的时候没有动画效果。在滚动的时候添加过渡动画能给我们的软件增色不少,例如Office 2013的滚动的时候支持动画看起来就舒服多了。
原文:C# WPF QQ新消息托盘悬浮窗效果实现 今天在做一个项目的时候需要这么一个效果,但是网上找了一会发现并没有现成的给我参考(复制),但是呢,我千(到)辛(处)万(抄)苦(袭)想(复)破(制)头(粘)脑(贴)终于还是给做出来了~嘿嘿嘿 QQ新消息悬浮窗即:QQ有新消息时托盘图标会闪动,此时移动鼠标到托盘图标上就会显示一个弹框了,那么呢我把这个弹框称为“QQ新消息托盘悬浮窗”。