我订阅了wpf窗口的Loaded事件:Loaded += loaded;
并尝试更改后面代码中某些控件的不透明度。
我注意到在方法loaded
控件不是由wpf绘制的。所以代码没有效果,仅在方法退出后才会显示控件。在Loaded事件中渲染未完成
1)是否有其他事件,例如Rendered
,我可以订阅?
编辑:我刚刚发现有一个OnContentRendered事件和下面的代码工作:
虽然动画可能是可取的。
protected override void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
for (int i = 0; i < 100; i++)
{
Parentpanel.Opacity += 0.01;
Splashscreen.Opacity -= 0.01;
Dispatcher.Invoke(new Action(() => { }), DispatcherPriority.ContextIdle, null);
Thread.Sleep(50);
}
}
否则我可能必须使用改变的UserControl1的不透明度为0.1〜1.0和usercontrol2的从1.0到0.0的动画。
2)你知道这样一个动画的例子吗?
您的控件在哪里定义?例如,如果它们是在'ControlTemplate'中定义的,则在引发'Loaded'事件时它们可能不会准备好。在这个例子中,你需要处理['FrameworkElement.OnApplyTemplate'方法](http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.onapplytemplate.aspx)。 – Sheridan