SetAutoWireViewModel() public static method

public static SetAutoWireViewModel ( BindableObject bindable, bool value ) : void
bindable BindableObject
value bool
return void
Esempio n. 1
0
        public IDialogResult ShowWindow(string name)
        {
            IDialogResult dialogResult = new DialogResult(ButtonResult.None);

            var content = _containerExtension.Resolve <object>(name);

            if (!(content is Window dialogContent))
            {
                throw new NullReferenceException("A dialog's content must be a Window");
            }

            if (dialogContent is Window view && view.DataContext is null && ViewModelLocator.GetAutoWireViewModel(view) is null)
            {
                ViewModelLocator.SetAutoWireViewModel(view, true);
            }

            if (!(dialogContent.DataContext is IDialogAware viewModel))
            {
                throw new NullReferenceException("A dialog's ViewModel must implement the IDialogAware interface");
            }

            if (dialogContent is IDialogWindow dialogWindow)
            {
                ConfigureDialogWindowEvents(dialogWindow, result => { dialogResult = result; });
            }

            MvvmHelpers.ViewAndViewModelAction <IDialogAware>(viewModel, d => d.OnDialogOpened(null));
            dialogContent.ShowDialog();

            return(dialogResult);
        }
Esempio n. 2
0
 internal static void AutowireViewModel(object viewOrViewModel)
 {
     if (viewOrViewModel is FrameworkElement view && view.DataContext is null && ViewModelLocator.GetAutoWireViewModel(view) is null)
     {
         ViewModelLocator.SetAutoWireViewModel(view, true);
     }
 }
Esempio n. 3
0
        public async Task AutoWireViewModel_With_Custom_Resolver_And_Factory()
        {
            await ExecuteOnUIThread(() =>
            {
                var page = new MockPage();

                // Set the ViewTypeToViewModelTypeResolver
                ViewModelLocator.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
                {
                    var viewName = viewType.FullName;

                    // The ViewModel is in the same namespace as the View
                    var viewModelName = String.Format("{0}ViewModel", viewName);
                    return(Type.GetType(viewModelName));
                });

                // Set the ViewTypeToViewModelTypeResolver
                ViewModelLocator.SetDefaultViewModelFactory((viewModelType) =>
                {
                    // The ViewModel has a constructor with no parameters
                    return(Activator.CreateInstance(viewModelType) as ViewModel);
                });

                // Fire AutoWireViewModelChanged
                ViewModelLocator.SetAutoWireViewModel(page, true);

                Assert.IsNotNull(page.DataContext);
                Assert.IsInstanceOfType(page.DataContext, typeof(MockPageViewModel));
            });
        }
Esempio n. 4
0
        protected override void InitializeShell(Window shell)
        {
            base.InitializeShell(shell);

            Container.GetContainer().RegisterShell(shell);
            ViewModelLocator.SetAutoWireViewModel(shell, true);
        }
Esempio n. 5
0
        /// <summary>Initializes a new instance of the <see cref="PlayerPage" /> class.</summary>
        public PlayerPage()
        {
            this.InitializeComponent();

            if (!DesignMode.DesignModeEnabled)
            {
                ViewModelLocator.SetAutoWireViewModel(this, true);
            }
        }
        public void AutoWireViewModelWithFactoryRegistration()
        {
            var page = new MockPage();

            ViewModelLocator.Register(typeof(MockPage).ToString(), () => new MockPageViewModel());
            ViewModelLocator.SetAutoWireViewModel(page, true);

            Assert.IsNotNull(page.BindingContext);
            Assert.IsInstanceOf(typeof(MockPageViewModel), page.BindingContext);
        }
Esempio n. 7
0
 //This method exists as a hack to get the XAML assebmlies loaded in the plugin
 public static void LoadAssemblies()
 {
     var av = new ICSharpCode.AvalonEdit.TextEditor();
     var ac = new p.InvokeCommandAction();
     i.InvokeCommandAction action = new i.InvokeCommandAction();
     action.CommandName = "Loaded";
     var window = new Window();
     x.VisualStateUtilities.GetVisualStateGroups(window);
     ViewModelLocator.SetAutoWireViewModel(window, false);
 }
Esempio n. 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainPage"/> class.
        /// </summary>
        public MainPage()
        {
            this.InitializeComponent();

            if (!DesignMode.DesignModeEnabled)
            {
                ViewModelLocator.SetAutoWireViewModel(this, true);

                this.ViewModel.PropertyChanged += this.ViewModelPropertyChanged;
            }
        }
Esempio n. 9
0
        public void ShouldLocateViewModelWithDefaultSettingsForViewsThatEndWithView()
        {
            ResetViewModelLocationProvider();

            MockView view = new MockView();

            Assert.Null(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.NotNull(view.DataContext);
            Assert.IsType <MockViewModel>(view.DataContext);
        }
Esempio n. 10
0
        /// <summary>
        ///   This method exists as a hack to get the XAML assemblies loaded in the plugin.
        /// </summary>
        public static void LoadAssemblies()
        {
            i.InvokeCommandAction action = new i.InvokeCommandAction();
            action.CommandName = "Loaded";
            var window = new Window();

            x.VisualStateUtilities.GetVisualStateGroups(window);
            ViewModelLocator.SetAutoWireViewModel(window, false);
            var action2 = new Prism.Interactivity.InvokeCommandAction();

            action.CommandName = "Loaded";
        }
Esempio n. 11
0
        public void ShouldLocateViewModelWithDefaultSettings()
        {
            ResetViewModelLocationProvider();

            Mock view = new Mock();

            Assert.IsNull(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.IsNotNull(view.DataContext);
            Assert.IsInstanceOfType(view.DataContext, typeof(MockViewModel));
        }
Esempio n. 12
0
        /// <summary>Initializes a new instance of the <see cref="PlaylistPage" /> class.</summary>
        public PlaylistPage()
        {
            this.InitializeComponent();

            if (!DesignMode.DesignModeEnabled)
            {
                ViewModelLocator.SetAutoWireViewModel(this, true);
            }

            this.ViewModel.PropertyChanged += this.ViewModelPropertyChanged;

            this.Unloaded += this.PlaylistPageUnloaded;
        }
Esempio n. 13
0
        /// <summary>
        ///     This method exists as a hack to get the XAML assemblies loaded in the plugin.
        /// </summary>
        public static void LoadAssemblies()
        {
            var formatter = FormatterAssemblyStyle.Full;
            var action    = new i.InvokeCommandAction();

            action.CommandName = "Loaded";
            var window = new Window();

            ViewModelLocator.SetAutoWireViewModel(window, false);
            var action2 = new InvokeCommandAction();

            action.CommandName = "Loaded";
        }
Esempio n. 14
0
        public void ShouldUseCustomDefaultViewTypeToViewModelTypeResolverWhenSet()
        {
            ResetViewModelLocationProvider();

            Mock view = new Mock();

            Assert.Null(view.DataContext);

            ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver(viewType => typeof(ViewModelLocatorFixture));

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.NotNull(view.DataContext);
            Assert.IsType <ViewModelLocatorFixture>(view.DataContext);
        }
Esempio n. 15
0
        public async Task AutoWireViewModel_With_Factory_Registration()
        {
            await ExecuteOnUIThread(() =>
            {
                var page = new MockPage();

                // Register the ViewModel to the page
                ViewModelLocator.Register(typeof(MockPage).ToString(), () => new MockPageViewModel());

                // Fire AutoWireViewModelChanged
                ViewModelLocator.SetAutoWireViewModel(page, true);

                Assert.IsNotNull(page.DataContext);
                Assert.IsInstanceOfType(page.DataContext, typeof(MockPageViewModel));
            });
        }
Esempio n. 16
0
        public void ShouldUseCustomFactoryWhenSet()
        {
            ResetViewModelLocationProvider();

            Mock view = new Mock();

            Assert.Null(view.DataContext);

            string viewModel = "Test String";

            ViewModelLocationProvider.Register(view.GetType().ToString(), () => viewModel);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.NotNull(view.DataContext);
            ReferenceEquals(view.DataContext, viewModel);
        }
Esempio n. 17
0
        public void ShouldUseCustomDefaultViewModelFactoryWhenSet()
        {
            ResetViewModelLocationProvider();

            Mock view = new Mock();

            Assert.Null(view.DataContext);

            object mockObject = new object();

            ViewModelLocationProvider.SetDefaultViewModelFactory(viewType => mockObject);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.NotNull(view.DataContext);
            ReferenceEquals(view.DataContext, mockObject);
        }
Esempio n. 18
0
        public void WhenOnAutoWireViewModelChangedThenViewBindingContextIsViewModel()
        {
            InitializeAViewModelIoC();

            var view = new AView();

            var autoWireViewModel = ViewModelLocator.GetAutoWireViewModel(view);

            Check.That(autoWireViewModel).IsFalse();

            ViewModelLocator.SetAutoWireViewModel(view, true);

            Check.That(view.BindingContext).IsInstanceOf <AViewModel>();

            autoWireViewModel = ViewModelLocator.GetAutoWireViewModel(view);
            Check.That(autoWireViewModel).IsTrue();
        }
Esempio n. 19
0
        public void ShouldLocateViewModelAndResolveWithContainer()
        {
            var bootstrapper = new MockBootstrapper();

            bootstrapper.Run();

            bootstrapper.ContainerRegistry.Register <IService, MockService>();

            var view = new MockView();

            Assert.Null(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.NotNull(view.DataContext);
            Assert.IsType <MockViewModel>(view.DataContext);

            Assert.NotNull(((MockViewModel)view.DataContext).MockService);
        }
Esempio n. 20
0
        public void ShouldLocateViewModelAndResolveWithContainer()
        {
            var bootstrapper = new DefaultMunqBootstrapper();

            bootstrapper.Run();

            bootstrapper.BaseContainer.Register <IService, MockService>();

            var view = new MockView();

            view.DataContext.ShouldBeNull();

            ViewModelLocator.SetAutoWireViewModel(view, value: true);

            view.DataContext.ShouldNotBeNull();
            view.DataContext.ShouldBeOfType <MockViewModel>();
            ((MockViewModel)view.DataContext).MockService.ShouldNotBeNull();
        }
        public void ShouldLocateViewModelAndResolveWithKernel()
        {
            var bootstrapper = new DefaultNinjectBootstrapper();

            bootstrapper.Run();

            bootstrapper.Kernel.Bind <IService>().To <MockService>();

            var view = new MockView();

            Assert.IsNull(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.IsNotNull(view.DataContext);
            Assert.IsInstanceOfType(view.DataContext, typeof(MockViewModel));

            Assert.IsNotNull(((MockViewModel)view.DataContext).MockService);
        }
        public void ShouldLocateViewModelAndResolveWithContainer()
        {
            var bootstrapper = new DefaultUnityBootstrapper();

            bootstrapper.Run();

            bootstrapper.BaseContainer.RegisterType <IService, MockService>();

            MockView view = new MockView();

            Assert.IsNull(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.IsNotNull(view.DataContext);
            Assert.IsInstanceOfType(view.DataContext, typeof(MockViewModel));

            Assert.IsNotNull(((MockViewModel)view.DataContext).MockService);
        }
        public void ShouldLocateViewModelAndResolveWithContainer()
        {
            var bootstrapper = new DefaultGraceBootstrapper();

            bootstrapper.Run();

            bootstrapper.BaseContainer.Configure(c => c.ExportAs <MockService, IService>());

            MockView view = new MockView();

            Assert.IsNull(view.DataContext);

            ViewModelLocator.SetAutoWireViewModel(view, true);
            Assert.IsNotNull(view.DataContext);
            Assert.IsInstanceOfType(view.DataContext, typeof(MockViewModel));

            Assert.IsNotNull(((MockViewModel)view.DataContext).MockService);
        }
Esempio n. 24
0
        public async Task <IDialogResult> ShowDialog(string name, IDialogParameters parameters = null, string IdentifierName = "Root")
        {
            if (parameters == null)
            {
                parameters = new DialogParameters();
            }

            var content = _containerExtension.Resolve <object>(name);

            if (!(content is FrameworkElement dialogContent))
            {
                throw new NullReferenceException("A dialog's content must be a FrameworkElement");
            }

            if (dialogContent is FrameworkElement view && view.DataContext is null && ViewModelLocator.GetAutoWireViewModel(view) is null)
            {
                ViewModelLocator.SetAutoWireViewModel(view, true);
            }

            if (!(dialogContent.DataContext is IDialogHostAware viewModel))
            {
                throw new NullReferenceException("A dialog's ViewModel must implement the IDialogAware interface");
            }

            viewModel.IdentifierName = IdentifierName;

            DialogOpenedEventHandler eventHandler = async
                                                        (sender, eventArgs) =>
            {
                var content = eventArgs.Session.Content;
                eventArgs.Session.UpdateContent(new ProgressDialog());
                if (viewModel is IDialogHostAware aware)
                {
                    await aware.OnDialogOpenedAsync(parameters);
                }
                eventArgs.Session.UpdateContent(content);
            };

            return((IDialogResult)await DialogHost.Show(dialogContent, viewModel.IdentifierName, eventHandler));
        }
Esempio n. 25
0
        private FrameworkElement GetDialogContent(string name, string IdentifierName = "Root")
        {
            var content = _containerExtension.Resolve <object>(name);

            if (!(content is FrameworkElement dialogContent))
            {
                throw new NullReferenceException("A dialog's content must be a FrameworkElement");
            }

            if (dialogContent is FrameworkElement view && view.DataContext is null && ViewModelLocator.GetAutoWireViewModel(view) is null)
            {
                ViewModelLocator.SetAutoWireViewModel(view, true);
            }

            if (!(dialogContent.DataContext is IHostDialogAware viewModel))
            {
                throw new NullReferenceException("A dialog's ViewModel must implement the IDialogHostAware interface");
            }

            viewModel.IdentifierName = IdentifierName;

            return(dialogContent);
        }
        public async Task AutoWireViewModel_With_Custom_Resolver()
        {
            await DispatcherHelper.ExecuteOnUIThread(() =>
            {
                var page = new MockPage();

                // Set the ViewTypeToViewModelTypeResolver
                ViewModelLocationProvider.SetDefaultViewTypeToViewModelTypeResolver((viewType) =>
                {
                    var viewName = viewType.FullName;

                    // The ViewModel is in the same namespace as the View
                    var viewModelName = String.Format("{0}ViewModel", viewName);
                    return(Type.GetType(viewModelName));
                });

                // Fire AutoWireViewModelChanged
                ViewModelLocator.SetAutoWireViewModel(page, true);

                Assert.IsNotNull(page.DataContext);
                Assert.IsInstanceOfType(page.DataContext, typeof(MockPageViewModel));
            });
        }
 public MainWindow()
 {
     InitializeComponent();
     ViewModelLocator.SetAutoWireViewModel(this, true);
 }
 protected override void InitializeShell()
 {
     ViewModelLocator.SetAutoWireViewModel(this.Shell, true);
     ((MainWindow)this.Shell).Show();
 }
Esempio n. 29
0
 public MvvmUserControl()
 {
     ViewModelLocator.SetAutoWireViewModel(this, true);
     DataContextChanged += MvvmUserControl_DataContextChanged;
 }
Esempio n. 30
0
        public void WhenOnAutoWireViewModelChangedAndViewModelNotRegisterThenNothing()
        {
            var view = new AView();

            Check.ThatCode(() => ViewModelLocator.SetAutoWireViewModel(view, true)).Throws <KeyNotFoundException>();
        }