同意ls用Storyboard在Expression Blend,画一矩型,按F7,进入Animation Workspace.
增加一个Event,增加一个Action, 在时间线开始处增加一个关键帧,在时间线适当地方按住Shift键放大矩型。OK,that's all.有点像Flash里做动画似的。没有闪烁~
增加一个Event,增加一个Action, 在时间线开始处增加一个关键帧,在时间线适当地方按住Shift键放大矩型。OK,that's all.有点像Flash里做动画似的。没有闪烁~
解决方案 »
- c#动态编译 能不能给动态编译的代码段中的一个数组赋值为 编译代码外的一个数组的值呢!
- VS2008 自定义模板问题“未将对象引用设置到对象的实例”
- C#程序开机自动启动与手动启动的区别
- GridView 如何根据指定值改变行的背景色?请高手指点下
- 初学C#调试过程中出现了很多错误,不知道如何解决,请教各位高手了!!(谢谢了)
- 如何将cs文件编译成exe和dll,先谢!
- 请介绍一本书,VS 2005,C#2.0或者ADO.NET 2.0都可以 [进者有分]
- 急!关于一个datagrid的问题
- 求教:C#如何读网上图片2
- 那位大虾推荐一本C#教材?
- 打开dwg文件报错 未处理 FileNotFoundException
- 谁有c#下的水晶报表api说明
WPF中UI线程队列由Dispatcher来管理和调度,所以当用户线程中更新UI时,必须通过Dispatche来调度,下面这个小例子将给用户展示如何在用户线程中更新当前的时间.
前台的XAML代码如下:
<Windowx:Class="ThreadInvoke.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ThreadInvoke"Height="300"Width="300"
>
<StackPanelOrientation="Vertical">
<StackPanelOrientation="Horizontal">
<ButtonContent="Ok"Click="okClick"Width="50"/>
<ButtonContent="Stop"Click="stopClick"Width="50"/>
</StackPanel>
<TextBoxName="timeText"></TextBox>
</StackPanel>
</Window>
后台的主要代码如下:
//申明一个代理用于想UI更新时间
private delegate void DelegateSetCurrentTime();
//申明一个变量,用于停止时间的跳动
private bool stopFlag = false;
//处理开始和结束事件
private void okClick(object sender,RoutedEventArgs args)
{
stopFlag = false;
Thread thread = new Thread(new ThreadStart(refreshTime));
thread.Start();
}
private void stopClick(object sender, RoutedEventArgs args)
{
stopFlag = true;
}
//用户线程的实现函数
private void refreshTime()
{
while (!stopFlag)
{
//向UI界面更新时钟显示 Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.SystemIdle, new DelegateSetCurrentTime(setCurrentTime));
}
}
private void setCurrentTime()
{
String currentTime = System.DateTime.Now.ToString();
timeText.Text = currentTime;
}
public mainwindow()
{
this.InitializeComponent();
bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler( bw_DoWork );//把自己的代码放bw_DoWork函数里ok
}
private void bw_DoWork( object sender, DoWorkEventArgs e )
{
Dispatcher.BeginInvoke(DispatcherPriority.Loaded, //这就是单独执行的,当然段这段可以放在别的函数里
new Action(delegate()
{ }
}