我订阅了 wpf 窗口的 Loaded 事件:Loaded += loaded;
并尝试在后面的代码中更改某些控件的不透明度。
我注意到在该方法loaded
中,控件还没有被 wpf 绘制。所以代码没有效果,控件的渲染只有在方法退出后才会发生。
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)你知道这样一个动画的例子吗?