2012-01-27 91 views
0

是否有任何理由说明为什么事件LoadedPivotItem在分配了Pivot的DataContext时未触发,因此创建数据透视表项?Pivot控件上的LoadedPivotItem事件未被第一次触发,WP7

只有在Swype处理已经由_SelectionChanged事件处理的下一个数据透视表项时才会触发它。

protected override void OnNavigatedTo 
    (System.Windows.Navigation.NavigationEventArgs e) 
    { 
     var someData = LoadData(); 

     pivot.DataContext = someData; 
     base.OnNavigatedTo(e); 
    } 

void pivot_LoadedPivotItem(object sender, PivotItemEventArgs e) 
    { 
     // Will not stop here after data being assigned to DataContext 
    } 

我需要这个事件,特别是因为我需要PivotItem和它的数据上下文进行进一步的操作。 有没有什么我做错了,或者有一些其他事件,我可以在这里使用时获得一个PivotItem(PivotItemEventArgs)。

谢谢

回答

0

我认为问题是您的页面如何加载的时间。我没有看到你在你的代码中附加了一个事件处理程序,所以我假设你在你的XAML中指定了事件处理程序。在页面上的所有内容完全加载并连线之前,事件可能会过早。

尝试删除从你的XAML事件处理程序,并将其移动到您的OnNavigatedTo事件(伪):

protected override void OnNavigatedTo (NavigationEventArgs e) 
{ 
    var someData = LoadData(); 

    pivot.DataContext = someData; 
    OnLoadedPivotItem += pivot_LoadedPivotItem; 
    base.OnNavigatedTo(e); 
} 

如果不工作,this article可能会有所帮助。它描述了在加载控制树时发生的事件序列。跳出可能有用的建议是附加到LayoutUpdated事件而不是Loaded事件。