Skip to content

Instantly share code, notes, and snippets.

namespace Prism.Regions
{
/// <summary>
/// Interface for allowing extensible behavior on regions.
/// </summary>
public interface IRegionBehavior
{
/// <summary>
/// The region that this behavior is extending.
/// </summary>
--- implementation
public class CustomBehavior : IRegionBehavior
{
...
}
--- bootstrapper
protected override IRegionBehaviorFactory ConfigureDefaultRegionBehaviors()
{
--xaml
<ItemControl prism:RegionManager.RegionName="Navigation">
regionManager.Region[“Navigation”].Add(SomeView);
unityContainer.RegisterType<object, SomeView>("viewName");
regionManager.RequestNavigate(“Navigation”, “viewName”);
--xaml
<ItemsControl prism:RegionManager.RegionName="Navigation"/>
regionManager.Region[“Navigation”].Add(SomeView);
regionManager.Region[“Navigation”].Add(SomeView);
regionManager.Region[“Navigation”].Add(SomeView);
unityContainer.RegisterType<object, SomeView>("viewName");
regionManager.RequestNavigate(“Navigation”, “viewName”);
public object LoadContent(IRegion region, NavigationContext navigationContext)
{
if (region == null)
throw new ArgumentNullException(nameof(region));
if (navigationContext == null)
throw new ArgumentNullException(nameof(navigationContext));
string candidateTargetContract = this.GetContractFromNavigationContext(navigationContext);
-- Register
unityContainer.RegisterType<object, SomeView>("viewName");
unityContainer.RegisterType<object, SomeOtherView>("someOtherViewName");
-- Usage
regionManager.RequestNavigate("Navigation", "viewName");
regionManager.RequestNavigate("Navigation", "someOtherViewName");
public interface INavigationAware
{
/// <summary>
/// Called when the implementer has been navigated to.
/// </summary>
/// <param name="navigationContext">The navigation context.</param>
void OnNavigatedTo(NavigationContext navigationContext);
/// <summary>
/// Called to determine if this instance can handle the navigation request.
public class SampleViewModel: BindableBase, INavigationAware
{
...
public const string Name = "SampleView";
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return navigationContext.Uri.OriginalString.Equals(Name)? true : false
}
...
-- Sending Navigation Parameters
var parameters = new NavigationParameters();
parameters.Add("SomeParamater", "SomeParameterValue");
regionManager.RequestNavigate("Navigation", "viewName", parameters);
-- Receiving Navigation Parameters
public class SampleViewModel: BindableBase, INavigationAware
{
...
public class SampleViewModel: BindableBase, INavigationAware
{
...
private IRegionNavigationJournal journal;
public void OnNavigatedTo(NavigationContext navigationContext)
{
journal = navigationContext.NavigationService.Journal
}