IRegionManager can register view with Region but by default only works for Content Control (single item), ItemsControl (2+ Items)
<ContentControl Grid.Row="1" cal:RegionManager.RegionName="{x:Static def:RegionNames.PricingGridRegion}" />
regMgr.RegisterViewWithRegion("PricingGridRegion", typeof(DurationTraderView));
<!--<ItemsControl cal:RegionManager.RegionName="{x:Static def:RegionNames.PricingGridRegion}"/>-->
<StackPanel cal:RegionManager.RegionName="{x:Static def:RegionNames.PricingGridRegion}" Orientation="Horizontal" FlowDirection="RightToLeft" />
Custom Region Adapter is needed to register into Stack Panel:
public class StackPanelRegionAdapter : RegionAdapterBase<StackPanel>
{
public StackPanelRegionAdapter(RegionBehaviorFactory factory) : base(factory) { }
protected override void Adapt(IRegion region, StackPanel regionTarget)
{
region.Views.CollectionChanged+=(s,ea)=>
{
if(ea.Action== NotifyCollectionChangedAction.Add)
{
foreach(FrameworkElement fe in ea.NewItems)
{
regionTarget.Children.Add(fe);
}
}
};
}
protected override IRegion CreateRegion()
{
return new AllActiveRegion();
// return new SingleActiveRegion(); // if onely one item
}
}
public class Module : IModule
{
public void Initialize()
{
IRegion reg = _regMgr.Regions[RegionNames.PricingGridRegion];
reg.Add(_container.Resolve<SampleView>());
reg.Add(_container.Resolve<SampleView>());
reg.Add(_container.Resolve<SampleView>());
reg.Add(_container.Resolve<SampleView>());
reg.Add(_container.Resolve<SampleView>());
}
Monday, August 11, 2014
Custom Region Adapter
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment