我需要在显示视图后立即运行一些代码(比如显示消息框)。我试图覆盖OnInitialize
,OnViewLoaded
或OnViewAttached
,但它始终相同。视图尚未完全显示。
我在显示视图时使用了一些动画,但同时需要将一些数据加载到网格中。如果我将数据加载到OnInitialize
,OnViewLoaded
或OnViewAttached
,则动画不会平滑,因为它在加载数据的同时发生。
有什么想法吗?
答案 0 :(得分:0)
尝试这样的东西 - 在绑定网格之前使用couroutine等待动画完成:
private IEnumerator<IResult> ViewModelStartup()
{
yield return new WaitForAnimation("AnimationName");
BindData();
}
(注意 - 你可以加载数据异步,但不要分配它)
然后当您的表单加载时:
private void OnViewAttached()
{
Coroutine.BeginExecute(ViewModelStartup(), new ActionExecutionContext() { View = this.GetView() });
}
(上面的代码可能不是100%......我认为View
必须在FrameworkElement
中ActionExecutionContext
,因此根据需要进行转换或创建包装类)
WaitForAnimation
协程的实现将在视图中搜索命名动画,并在触发回调之前等待它完成。如果找不到动画,你应该只是触发回调。 couprine可用于多个视图。
(协同程序必须实现IResult
查看CM codeplex网站上的文档以获取信息)