|
using System;
using System.Collections.Specialized;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Practices.Prism.Regions;
using System.ComponentModel.Composition;
namespace NavInfrastructure.Prism
{
/// <summary>
/// Adapter that creates a new <see cref="AllActiveRegion"/> and binds all
/// the views to the adapted <see cref="ToolBarTray"/>.
/// </summary>
public class ToolBarTrayRegionAdapter : RegionAdapterBase<ToolBarTray>
{
public ToolBarTrayRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory)
: base(regionBehaviorFactory)
{
}
//// Recomendate documentation PRISM Appendix E: Extending Prism
protected override void Adapt(IRegion region, ToolBarTray regionTarget)
{
// Correctly reference
if (region == null) throw new ArgumentNullException("region");
if (regionTarget == null) throw new ArgumentNullException("regionTarget");
// Reaction of the changes field ToolBars in ToolBarTray
region.Views.CollectionChanged += (sender, e) =>
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach (FrameworkElement element in e.NewItems)
{
regionTarget.ToolBars.Add(element as ToolBar);
}
break;
case NotifyCollectionChangedAction.Remove:
foreach (UIElement elementLoopVariable in e.OldItems)
{
var element = elementLoopVariable;
if (regionTarget.ToolBars.Contains(element))
{
regionTarget.ToolBars.Remove(element as ToolBar);
}
}
break;
}
};
}
protected override IRegion CreateRegion()
{
// Recomendate documentation PRISM Appendix E: Extending Prism
return new AllActiveRegion();
}
}
/// <summary>
/// Version MEF as extension.
/// </summary>
[Export(typeof(ToolBarTrayRegionAdapter))]
[PartCreationPolicy(CreationPolicy.Shared)]
public class MefToolBarTrayRegionAdapter:ToolBarTrayRegionAdapter
{
[ImportingConstructor]
public MefToolBarTrayRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory)
:base(regionBehaviorFactory)
{
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.