Hi,
I am using RadDocking control in my prism application. I have created RadGroupPane addapter. Its working fine for a group pane if Its docked state, But if I change the state and try to add new view in my group pane then it throws an exception that index for region does not exist or out of index. "Insertion index was out of range. Must be non-negative and less than or equal to size.\r\nParameter name: index". is that a know issue, Can any one suggest me the solution for the problem please. The Adapter code is as follows:
public class DockManagerAdapter : RegionAdapterBase<RadPaneGroup>
{
protected override void Adapt(IRegion region, RadPaneGroup regionTarget)
{
region.ActiveViews.CollectionChanged += (s, e) =>
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (var item in e.NewItems.OfType<RadPane>())
{
regionTarget.Items.Add(item);
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (var item in e.OldItems.OfType<RadPane>())
{
item.RemoveFromParent();
}
break;
case NotifyCollectionChangedAction.Replace:
var oldItems = e.OldItems.OfType<RadPane>();
var newItems = e.NewItems.OfType<RadPane>();
var newItemsEnumerator = newItems.GetEnumerator();
foreach (var oldItem in oldItems)
{
var parent = oldItem.Parent as ItemsControl;
if (parent != null && parent.Items.Contains(oldItem))
{
parent.Items[parent.Items.IndexOf(oldItem)] = newItemsEnumerator.Current;
if (!newItemsEnumerator.MoveNext())
{
break;
}
}
else
{
oldItem.RemoveFromParent();
regionTarget.Items.Add(newItemsEnumerator.Current);
}
}
break;
case NotifyCollectionChangedAction.Reset:
regionTarget
.EnumeratePanes()
.ToList()
.ForEach(p => p.RemoveFromParent());
break;
}
};
foreach (var view in region.Views.OfType<RadPane>())
{
regionTarget.Items.Add(view);
}
}
protected override IRegion CreateRegion()
{
return new SingleActiveRegion();
}
}
Regards,
I am using RadDocking control in my prism application. I have created RadGroupPane addapter. Its working fine for a group pane if Its docked state, But if I change the state and try to add new view in my group pane then it throws an exception that index for region does not exist or out of index. "Insertion index was out of range. Must be non-negative and less than or equal to size.\r\nParameter name: index". is that a know issue, Can any one suggest me the solution for the problem please. The Adapter code is as follows:
public class DockManagerAdapter : RegionAdapterBase<RadPaneGroup>
{
protected override void Adapt(IRegion region, RadPaneGroup regionTarget)
{
region.ActiveViews.CollectionChanged += (s, e) =>
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (var item in e.NewItems.OfType<RadPane>())
{
regionTarget.Items.Add(item);
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (var item in e.OldItems.OfType<RadPane>())
{
item.RemoveFromParent();
}
break;
case NotifyCollectionChangedAction.Replace:
var oldItems = e.OldItems.OfType<RadPane>();
var newItems = e.NewItems.OfType<RadPane>();
var newItemsEnumerator = newItems.GetEnumerator();
foreach (var oldItem in oldItems)
{
var parent = oldItem.Parent as ItemsControl;
if (parent != null && parent.Items.Contains(oldItem))
{
parent.Items[parent.Items.IndexOf(oldItem)] = newItemsEnumerator.Current;
if (!newItemsEnumerator.MoveNext())
{
break;
}
}
else
{
oldItem.RemoveFromParent();
regionTarget.Items.Add(newItemsEnumerator.Current);
}
}
break;
case NotifyCollectionChangedAction.Reset:
regionTarget
.EnumeratePanes()
.ToList()
.ForEach(p => p.RemoveFromParent());
break;
}
};
foreach (var view in region.Views.OfType<RadPane>())
{
regionTarget.Items.Add(view);
}
}
protected override IRegion CreateRegion()
{
return new SingleActiveRegion();
}
}
Regards,