Wpf 当视图可见时caliburn微运行代码?

Wpf 当视图可见时caliburn微运行代码?,wpf,caliburn.micro,Wpf,Caliburn.micro,我需要在视图显示后立即运行一些代码(比如显示消息框)。我试图覆盖OnInitialize、OnViewLoaded或OnViewAttached,但总是一样的。视图尚未完全显示 我在显示视图时使用了一些动画,但同时需要将一些数据加载到网格中。如果我将数据加载到OnInitialize、OnViewLoaded或OnViewAttached中,动画会变得不平滑,因为加载数据时动画会同时发生 有什么想法吗?尝试一下这样的方法-在绑定网格之前,使用couroutine等待动画完成: private I

我需要在视图显示后立即运行一些代码(比如显示消息框)。我试图覆盖
OnInitialize
OnViewLoaded
OnViewAttached
,但总是一样的。视图尚未完全显示

我在显示视图时使用了一些动画,但同时需要将一些数据加载到网格中。如果我将数据加载到
OnInitialize
OnViewLoaded
OnViewAttached
中,动画会变得不平滑,因为加载数据时动画会同时发生


有什么想法吗?

尝试一下这样的方法-在绑定网格之前,使用couroutine等待动画完成:

private IEnumerator<IResult> ViewModelStartup()
{
    yield return new WaitForAnimation("AnimationName");
    BindData();
}
(上面的代码可能不是100%…我认为
View
必须是
ActionExecutionContext
中的
FrameworkElement
,以便根据需要进行转换或创建包装类)

WaitForAnimation
corroutine的实现将在视图中搜索命名动画,并在触发回调之前等待其完成。如果找不到动画,您可能应该触发回调。该例程可用于多个视图

(协同程序必须实现
IResult
查看CM codeplex网站上的文档以获取信息)


听起来像是在网格中运行,呈现绑定的数据,因此ui线程在加载时会锁定一点。为什么不使用协同程序等待动画完成,然后加载或绑定数据
private void OnViewAttached()
{
    Coroutine.BeginExecute(ViewModelStartup(), new ActionExecutionContext() { View = this.GetView() });
}