我想在Composite中删除我所在区域的所有视图.我正在使用Silverlight 4.0.
不幸的是,此代码在Composite内部与OutOfRangeException崩溃.
List<object> views = new List<object>(_regionManager.Regions["NavigationRegion"].Views);
foreach (object view in views)
{
_regionManager.Regions["NavigationRegion"].Remove(view);
}
Run Code Online (Sandbox Code Playgroud)
这是我的callstack:
[外部代码]
Microsoft.Practices.Composite.Presentation!Microsoft.Practices.Composite.Presentation.Regions.ViewsCollection.OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs E = {System.Collections.Specialized.NotifyCollectionChangedEventArgs})线102个+ 0X24字节C#
Microsoft.Practices.Composite.Presentation!Microsoft.Practices.Composite.Presentation.Regions.ViewsCollection.RemoveAndNotify(System.Collections.IList items = Count = 1)第45行+ 0x2b字节C#
Microsoft.Practices.Composite.Presentation!Microsoft. Practices.Composite.Presentation.Regions.ViewsCollection.UnderlyingCollection_CollectionChanged(对象发件人=计数= 0,System.Collections.Specialized.NotifyCollectionChangedEventArgs E = {System.Collections.Specialized.NotifyCollectionChangedEventArgs})线153 + 0XB字节C#[外部代码]
微软. Practices.Composite.Presentation!Microsoft.Practices.Composite.Presentation.Regions.Region.Remove(object view = {Kite.MyApp.SlUI.Navigation Region.NavigationRegionView})线230 + 0x1b字节C#
MyApp.SlUI!Kite.MyApp.SlUI.Components.ViewController.linksRegion_LanguageChanged(对象发件人= {Kite.MyApp.SlUI.Controls.LinksUserControl},Kite.MyApp.SlUI.Common. EventArgs e = {Kite.MyApp.SlUI.Common.EventArgs})第77行+ 0x2d字节C#
MyApp.SlUI!Kite.MyApp.SlUI.Controls.LinksUserControl.OnLanguageChanged(string newLanguage ="en-GB")第37行+ 0x32字节C#
MyApp.SlUI!Kite.MyApp.SlUI.Controls.LinksUserControl.ComboBox_SelectionChanged(对象发件人= {System.Windows.Controls.ComboBox},System.Windows.Controls.SelectionChangedEventArgs E = {System.Windows.Controls.SelectionChangedEventArgs})第31行+ 0xb字节C#[外部代码]
我错了什么?
PS在我所在的地区,我有3个观点.因此,复合体在删除第三个时崩溃了.
希望你帮忙:).谢谢.
UPD:我下载了调试符号,发现问题仅在Accordion控件中作为区域.这是完整的调用堆栈:
mscorlib.dll!System.ThrowHelper.ThrowArgumentOutOfRangeException(System.ExceptionArgument argument, System.ExceptionResource resource) + 0x41 bytes
mscorlib.dll!System.ThrowHelper.ThrowArgumentOutOfRangeException() + 0x10 bytes
mscorlib.dll!System.Collections.Generic.List<object>.this[int].get(int index …Run Code Online (Sandbox Code Playgroud)