首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测windows phone 7中何时完成与UI元素(全景和列表框)的数据绑定?

问如何检测windows phone 7中何时完成与UI元素(全景和列表框)的数据绑定?
EN

Stack Overflow用户
提问于 2011-10-06 03:10:56
回答 1查看 757关注 0票数 1

我在全景图中有一个全景控件和一个ListBox控件。当与全景和/或ListBox控件关联的所有数据绑定或UI显示完成时,是否有任何“事件”可供我挂接或以任何方式检测?

我需要检测此事件的原因是,我希望仅在全景和/或ListBox控件完全绑定并完成呈现后才显示ApplicationBar。

例如,我的XAML定义如下。

代码语言:javascript
复制
<controls:Panorama Name="panorama">
 <controls:Panorama.ItemTemplate>
  <DataTemplate>
   <ListBox ItemsSource="{Binding Details}">
    <ListBox.ItemTemplate>
     <DataTemplate>
      <TextBlock Text="{Binding Field1}"/>
      <TextBlock Text="{Binding Field2}"/>
      ...
      <TextBlock Text="{Binding FieldN}"/>
     </DataTemplate>
    </ListBox.ItemTemplate>
   </ListBox>
  </DataTemplate>
 </controls:Panorama.ItemTemplate>
</controls:Panorama>

我的普通CLR对象(POCO)如下所示。

代码语言:javascript
复制
public class MyPoco {
 List<Detail> Details { get; set; }
}
public class Detail {
 public string Field1 { get; set; }
 public string Field1 { get; set; }
 ...
 public string FieldN { get; set; }
}

在我的c#代码隐藏中,我按如下方式绑定数据。

代码语言:javascript
复制
List<MyPoco> pocos = GetMyPocosFromSomewhere();   
panorama.ItemsSource = myList;
ApplicationBar.IsVisible = true; //i only want to make this visible after the Panorama and ListBox controls have finished binding and rendering

现在,我在上面勾勒出的代码可以正常工作,但是在全景/列表框控件呈现之前,ApplicationBar总是可见的。对我来说,这使得用户体验变得笨拙。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 03:33:08

简短的回答是“不,你检测不到它”。

但是一个好的解决方案是将命令添加到UI工作队列。调度员。如下所示:

代码语言:javascript
复制
Dispatcher.BeginInvoke(() => ApplicationBar.IsVisible = true);

这样,当所有其他UI任务都完成时,它将首先渲染它,并且体验应该不会那么尴尬。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7666382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档