object ITypeResolver.CreateInstance(string name, string identifier)
    {
        var type = ((ITypeResolver)this).GetType(name);

#if NETFX_CORE
        var isViewModel = type.GetTypeInfo().IsSubclassOf(typeof(ViewModel));
#else
        var isViewModel = typeof(ViewModel).IsAssignableFrom(type);
#endif
        // IsAssignableFrom doesn't work with winRT
        // typeof(ViewModel).IsAssignableFrom(type);

        if (isViewModel)
        {
            var contextViewModel = PersistantViewModels.FirstOrDefault(p => p.Identifier == identifier);
            if (contextViewModel != null)
            {
                return(contextViewModel);
            }
            return(Activator.CreateInstance(type));
        }
        var view = PersistantViews.FirstOrDefault(p => p.Identifier == identifier);
        if (view != null)
        {
            Debug.Log(string.Format("Loading View: {0} - {1}", name, identifier));
            return(view);
        }
        return(ViewNotFoundOnLoad(name, identifier));
    }
    public void RegisterView(ViewBase view, ViewModel viewModel = null)
    {
        var vm = viewModel ?? view.ViewModelObject;

        if (!PersistantViews.Contains(view))
        {
            PersistantViews.Add(view);
        }

        if (!PersistantViewModels.Contains(vm))
        {
            PersistantViewModels.Add(vm);
        }

        //vm.Identifier = view.Identifier;
    }
Exemple #3
0
    object ITypeResolver.CreateInstance(string name, string identifier)
    {
        var type        = ((ITypeResolver)this).GetType(name);
        var isViewModel = typeof(ViewModel).IsAssignableFrom(type);

        if (isViewModel)
        {
            var contextViewModel = PersistantViewModels.FirstOrDefault(p => p.Identifier == identifier);
            if (contextViewModel != null)
            {
                return(contextViewModel);
            }
            return(Activator.CreateInstance(type));
        }
        var view = PersistantViews.FirstOrDefault(p => p.Identifier == identifier);

        if (view != null)
        {
            Debug.Log(string.Format("Loading View: {0} - {1}", name, identifier));
            return(view);
        }
        return(ViewNotFoundOnLoad(name, identifier));
    }
 public void UnRegisterView(ViewBase viewBase)
 {
     PersistantViews.Remove(viewBase);
 }