Fdream's Blog
专注于WEB前端开发
Powered by Google
1

奇怪,Frame类有个Opacity属性,设置其值为0.2一点反应都没有,又貌似没有其他属性可以设置透明度,难道是bug?如果是这样,那么Frame肯定是不能实现有透明度变化的动画了……

用Google搜了一下,找到这样两个帖子:

引用内容:

The animation worked when applied on other elements in a test project I made, including a Frame element with just a solid red background. I think it's just a limitation of the Frame element when rendering HTML. It uses the WebBrowser control which is just a wrapper around the MSHTML ActiveX control, I believe.

Hmm, it might be fun to write a Web browser in WPF...

引用内容:

Frame element is wrapping window with handle, thus it can not have animated opacity. However, you can create VisualBrush over Frame and Animate it

看来对HTML页面是真的没办法了,自己另外想办法实现咯:(

在设置了一个对象的Opacity动画之后,再为该对象设置一个Opacity值将会无效,奇怪的是也没有异常抛出,而且在该语句之后的语句也都不执行了。例如:

引用内容:

DoubleAnimation myDA = new DoubleAnimation(0.8, 0.0, new Duration(TimeSpan.FromMilliseconds(800)));

Storyboard.SetTargetName(myDA, "myObj");

Storyboard.SetTargetProperty(myDA, new PropertyPath(Canvas.OpacityProperty));

Storyboard mySB = new Storyboard();

mySB.Children.Add(myDA);

mySB.Begin(myObj);

若在此后再设置该对象的Opacity值将会无效,例如:

引用内容:

myObj.Opacity = 1.0;

且该句之后的语句都不会执行。想想可能是因为动画把该值给锁定了,于是尝试在动画完成之后remove掉该动画,于是把代码改成如下的样子...

写了两个多星期的WPF Application,今天需要在界面上增加点东西,想到用Blend 2来编辑XAML文件(画图还是比写代码方便很多),但是只有在Silverlight项目中才能方便地用Blend 2打开XAML文件,于是打开了一个最开始接触Silverlight时的几个例子,习惯性地Ctrl+F5,浏览器却给了我一个很大的惊奇:弹出了一个错误提示框:

引用内容:

The WPF/E installed on your system is no longer valid. Please go to

“http://go.microsoft.com/fwlink/?LinkID=81210&clcid=0x409e” for the latest version.

怏怏地跑到Silverlight官方网站去看看最新版本,找了半天还是只有Silverlight 1.1 Alpha-_-。好吧,我就当这个是最新版本了,重新下载了一遍,安装,按要求重启,打开项目,再编译运行,这次更是诡异了,浏览器一片空白,状态栏提示有JS错误。看看页面源代码,发现document.getElementById后的参数和div的id名称不一致了,我没有改过代码的呀!再开两个项目,发现还是这样,诡异的Orcas(Visual Studio 2008 Beta)……

不管了,继续编译,没有报错了,但是浏览器这次很直接告诉我我还没有装Silverlight……我ft!这么久白忙活了……

MS老大,alpha版也不是这么...

WPF中的定时器类
6 多云 2007-8
Fdream 发表于 Silverlight, 已被阅读 18024 次评论 5 条
关键词:WPF

刚开始接触WPF不久,也是第一次尝试开始写C#,写定时器的时候以为C#中System.Timer中的Timer类,结果发现老是抛出个很奇怪的异常:

引用内容:

The calling thread cannot access this object because a different thread owns it.

后来才发现,其实WPF是有自己的定时器类的,那就是System.Windows.Threading中的Timer类,使用起来也很简单:

引用内容:

//构造一个DispatcherTimer类实例

DispatcherTimer dTimer = new System.Windows.Threading.DispatcherTimer();

//设置事件处理函数

dTimer.Tick += new EventHandler(dTimer_Tick);

//定时器时间间隔1s

dTimer.Interval = new TimeSpan(0,0,1);

//启动定时器

dTimer.Start();

在上例中,也可以使用dTimer.IsEnabled = true;来启动定时器。

1
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 1.0469018 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号