wpfc#-4.0prism-4

How to get a name of the active view in PRISM


I am trying to navigate to the same view (same as the active one), but with new parameters. The problem is that I struggle to find a clean way to get a currently active view's name from RegionManager


Solution

  • From my understanding, I would recommend implementing an interface on each of your Views that provides the necessary information to determine which view it is, then use the ActiveViews property of the IRegion to access the active views.

    Something like:

    //Interface for identifying the Views
    public interface IApplicationView
    {
        string ViewName { get; }
    }
    
    //Example of a View with logic to determine which instance of the View it is
    public class ApplicationView : UserControl, IApplicationView
    {
        public string ViewName 
        { 
            get { return this.isViewA ? return "ViewA" : return "ViewB"; } 
        }
    }
    
    //Example of determining which view
    public class OtherComponent
    {
        public string GetActiveViewName(IRegion region)
        {
            IApplicationView activeView = region.ActiveViews.FirstOrDefault() as IApplicationView;
            return activeView == null ? string.Empty : activeView.ViewName;
        }
    }