我有一个问题:我一直得到一个InvalidOperationException:Element已经是WP7中抛出的另一个元素的子元素。当您尝试将UIElement多次添加到任何显示元素时,会发生这种情况。这样就可以了,因为我在富文本框中的一个段落中添加了多个静态成员,所以如果我要再次将静态成员添加到任何displayElement,我会得到这个异常。但是在OnNavigatingFrom方法中,我清除段落中的整个项目列表,因此它们不应再出现在列表中,并且不应显示异常。其他非静态成员不显示此异常。有人有什么建议吗?
private static Hyperlink websiteHyperLink = new Hyperlink( );
method:
if ( NavigationContext.QueryString.TryGetValue( key, out value ) )
{
Bold bold = new Bold( );
bold.Inlines.Add( UsedLanguage.cv_page_website );
websiteHyperLink.Inlines.Add( website );
websiteHyperLink.TargetName = website;
websiteHyperLink.Click += new RoutedEventHandler( OpenBrowserClient );
mParagraph.Inlines.Add( bold );
mParagraph.Inlines.Add( websiteHyperLink );
mParagraph.Inlines.Add( "\n" );
}
protected override void OnBackKeyPress ( System.ComponentModel.CancelEventArgs e )
{
mParagraphs.Inlines.Clear( );
base.OnBackKeyPress ( e );
}
答案 0 :(得分:1)
不要在OnBackKeyPress上执行此操作 - 这不会处理所有情况。
当NavigationMode(在事件args中)设置为“Back”时,在OnNavigatedFrom()[这是你的文字所说的,但不是你的代码]覆盖中运行你的清晰代码。
另外,请注意OnNavigateTo()可以在同一个实例上多次调用(例如,当您导航回它时) - 有一个局部变量,表明您是否已经添加了这些项目,因此您不需要再次击中它。
澄清问题:您是多次加载同一页面,还是仅加载一次?