1
我在Panorama中有一個Panorama控件和ListBox控件。是否有任何「事件」,我可以掛鉤或以任何方式檢測與Panorama和/或ListBox控件關聯的所有數據綁定或UI顯示何時完成?如何檢測數據綁定到UI元素(全景和列表框)已在Windows Phone 7中完成?
我需要檢測此事件的原因是因爲我只想在Panorama和/或ListBox控件完全綁定並完成呈現後才顯示ApplicationBar。
例如,我的XAML定義如下。
<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)看起來像下面這樣。
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#代碼隱藏,我綁定數據如下。
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
現在,該代碼我已經勾勒出了上述工作,但應用程序任務欄總是可見的全景/列表框控件已呈現之前。對我來說,這會讓用戶體驗變得尷尬。
任何幫助表示讚賞。
謝謝。這確實有助於緩解症狀。 –
只是爲了記錄,這用於UI的任何*更改。直接在UI線程上進行定期更改將被強制通過,其中BeginInvoke將在隊列中排隊。 –