Example #1
0
 public static void BindingTopmost(Window win)
 {
     Binding binding = new Binding("Topmost")
     {
         Source = MainFrame,
         Mode = BindingMode.OneWay
     };
     win.SetBinding(Window.TopmostProperty, binding);
 }
Example #2
0
        public void CreateWindowDoesNotSetUpTitleBindingIfTitleHasABindingAlready()
        {
            var model = new Screen();
            var window = new Window();
            var binding = new Binding("Test") { Mode = BindingMode.TwoWay };
            window.SetBinding(Window.TitleProperty, binding);
            this.viewManager.Setup(x => x.CreateAndBindViewForModelIfNecessary(model)).Returns(window);

            this.windowManager.CreateWindow(model, false);

            var e = window.GetBindingExpression(Window.TitleProperty);
            Assert.AreEqual("Test", e.ParentBinding.Path.Path);
        }
        private Task<Credential> DoSignInInUIThread(CredentialRequestInfo credentialRequestInfo)
        {
            // Create the ChildWindow that contains the SignInDialog
            var signInDialog = this;
            var childWindow = new Window
            {
                ShowInTaskbar = false,
                WindowStartupLocation = WindowStartupLocation.CenterOwner,
                WindowStyle = WindowStyle.ToolWindow,
                SizeToContent = SizeToContent.WidthAndHeight,
                ResizeMode = ResizeMode.NoResize,
                WindowState = WindowState.Normal,
                Content = signInDialog
            };

            if (Application.Current != null && Application.Current.MainWindow != null)
            {
                try
                {
                    childWindow.Owner = Application.Current.MainWindow;
                }
                catch
                {
                    // May fire an exception when used inside an excel or powerpoint addins
                }
            }


            // Bind the Title so the ChildWindow Title is the SignInDialog title (that will be initialized later)
            DependencyProperty titleProperty = Window.TitleProperty;
            var binding = new Binding("Title") { Source = signInDialog };
            childWindow.SetBinding(titleProperty, binding);
            childWindow.Closed += (s, e) => signInDialog.Cancel(); // be sure the SignInDialog is deactivated when closing the childwindow using the X


            // initialize the task that gets the credential and then close the window
            var ts = TaskScheduler.FromCurrentSynchronizationContext();
            var doSignInTask = signInDialog.WaitForCredentialAsync(credentialRequestInfo).ContinueWith(task =>
            {
                childWindow.Close();
                return task.Result;
            }, ts); 

            // Show the window
            childWindow.ShowDialog();

            return doSignInTask;
        }
        /// <summary>
        /// Ensures the that the view is a window or provides one.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="view">The view.</param>
        /// <param name="isDialog">Indicates we are insuring a dialog window.</param>
        /// <returns></returns>
        protected virtual Window EnsureWindow(object model, object view, bool isDialog)
        {
            var window = view as Window;

            if (window == null)
            {
                window = new Window
                {
                    Content = view,
                    SizeToContent = SizeToContent.WidthAndHeight
                };

                var screen = model as IPresenter;
                if (screen != null)
                {
                    var binding = new Binding("DisplayName") { Mode = BindingMode.TwoWay };
                    window.SetBinding(Window.TitleProperty, binding);
                }
            }
            //else if (Application.Current != null && Application.Current.MainWindow != null)
            //{
            //    if (Application.Current.MainWindow != window && isDialog)
            //        window.Owner = Application.Current.MainWindow;
            //}

            //if (Application.Current != null && Application.Current.MainWindow != null && Application.Current.MainWindow != window)
            //{
            //    window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            //    window.Owner = Application.Current.MainWindow;
            //}
            //else 
            //    window.WindowStartupLocation = WindowStartupLocation.CenterScreen;

            //if (window.Style == null)
            //{
            //    window.Style = Application.Current.TryFindResource(typeof(Window)) as Style;
            //}


            Window temp = null;

            if (Application.Current != null)
                foreach (Window item in Application.Current.Windows)
                {
                    if (ReferenceEquals(window, item))
                        break;

                    temp = item;
                }

            window.WindowStartupLocation = temp == null ? WindowStartupLocation.CenterScreen : WindowStartupLocation.CenterOwner;
            window.Owner = temp;

            return window;
        }
#pragma warning restore 1574

		private static void DoSignInInUIThread(string url, Action<IdentityManager.Credential, Exception> callback, IdentityManager.GenerateTokenOptions generateTokenOptions
#if !SILVERLIGHT
			, IdentityManager.AuthenticationType authenticationType = IdentityManager.AuthenticationType.Token
#endif
			)
		{
			// In SL and WPF : Create the ChildWindow that contains the SignInDialog
#if SILVERLIGHT
			ChildWindow childWindow = new ChildWindow();
			DependencyProperty titleProperty = ChildWindow.TitleProperty;
#else
			var childWindow = new Window
			{
				ShowInTaskbar = false,
				WindowStartupLocation = WindowStartupLocation.CenterOwner,
				WindowStyle = WindowStyle.ToolWindow,
				SizeToContent = SizeToContent.WidthAndHeight,
				ResizeMode = ResizeMode.NoResize,
				WindowState = WindowState.Normal
			};

			if (Application.Current != null && Application.Current.MainWindow != null)
			{
				try
				{
					childWindow.Owner = Application.Current.MainWindow;
				}
				catch (Exception)
				{
					// May fire an exception when used inside an excel or powerpoint addins
				}
			}

			DependencyProperty titleProperty = Window.TitleProperty;
#endif

			// Create the SignInDialog with the parameters given as arguments
			var signInDialog = new SignInDialog
			{
				Url = url,
				Callback = (credential, error) =>
				{
					childWindow.Close();
					callback(credential, error);
				},
				GenerateTokenOptions = generateTokenOptions,
				IsActive = true,
				Width = 300,
#if !SILVERLIGHT
				_authenticationType = authenticationType
#endif
			};

			childWindow.Content = signInDialog;

			// Bind the Title so the ChildWindow Title is the SignInDialog title (taht will be initialized later)
			Binding binding = new Binding("Title") { Source = signInDialog };
			childWindow.SetBinding(titleProperty, binding);
			childWindow.Closed += (s, e) => signInDialog.IsActive = false; // be sure the SignInDialog is deactivated (i.e. Callback executed once) when closing the childwindow using the X
			// Show the window
#if SILVERLIGHT
			childWindow.Show();
#else
			childWindow.ShowDialog();
#endif
		}
		private void StartStandBildMappingControl (DataProfile profile, 
				CommonProfileModell.RequestedFunction FunctionToDo)
			{
			DataDependencyToWorkFor = profile.ActiveDataDependency;
			DataDependencyCollectionToWorkFor = profile.DataDependencyCollectionToWorkForParameter;
			if (StandBildMappingControlWindow != null)
				StandBildMappingControlWindow.Close ();
			if (StandBildMappingControlWindow == null)
				{
				StandBildMappingControlWindow = new Window ();
//				StandBildMappingControlWindow.Title = CommonProfileModellInstance.HeadLineForProcessableStandBildMappingFull;
				Binding TitleBinding = new Binding ()
					{
					Source = this,
					Path = new PropertyPath ("CommonProfileModellInstance.HeadLineForProcessableStandBildMappingFull")
					};
				StandBildMappingControlWindow.SetBinding (Window.TitleProperty, TitleBinding);

				StandBildMappingControl STBControl = new StandBildMappingControl ();
				StandBildMappingControlWindow.Content = STBControl;

				Binding ModellBinding = new Binding ("CommonProfileModellInstance")
					{Source = this};
				STBControl.SetBinding (StandBildMappingControl.CommonProfileModellInstanceProperty, ModellBinding);

				Binding FullDataDependencyToWorkForBinding = new Binding("FullDataDependencyToWorkFor")
					{ Source = this };
				STBControl.SetBinding(StandBildMappingControl.DataDependencyToWorkForProperty,
								FullDataDependencyToWorkForBinding);

				Binding FullDataDependencyCollectionToWorkForBinding = new Binding("FullDataDependencyCollectionToWorkFor")
						{ Source = this };
				STBControl.SetBinding(StandBildMappingControl.FullDataDependencyCollectionToWorkForProperty,
								FullDataDependencyCollectionToWorkForBinding);
	
				StandBildMappingControlWindow.Closing += (O, Args) =>
					{
					STBControl.CloseRequested ();
					StandBildMappingControlWindow = null;
					};

				switch (FunctionToDo)
					{
					case CommonProfileModell.RequestedFunction.Show:
						STBControl.IsReadOnly = true;
						break;
					case CommonProfileModell.RequestedFunction.New:
					case CommonProfileModell.RequestedFunction.Modify:
					case CommonProfileModell.RequestedFunction.Delete:
						STBControl.IsReadOnly = false;
						break;
					}
				}
			//((CommonProfileModell) CommonProfileModellInstance).FunctionToDo = FunctionToDo;
			//((CommonProfileModell) CommonProfileModellInstance).SelectedDataTemplatesDescription = ActiveFullDataDependency;
			//((CommonProfileModell) CommonProfileModellInstance).DoRequestedFunction ();
			

			StandBildMappingControlWindow.Show ();
			}
Example #7
0
        /// <summary>
        /// Opens the top level view in a separate window.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="messageBoxResult">The message box result.</param>
        /// <param name="viewResult">The view result.</param>
        /// <returns>True if successfully opened</returns>
        private bool OpenTopLevelView(RequestContext context, MessageBoxResult messageBoxResult, ViewResult viewResult)
        {
            if (messageBoxResult != null && string.IsNullOrEmpty(viewResult.ViewIconResourceKey))
                viewResult.ViewIconResourceKey = messageBoxResult.ModelMessageBox.IconResourceKey;

            //Brush iconBrush = Brushes.Transparent;
            //if (!string.IsNullOrEmpty(viewResult.ViewIconResourceKey))
            //    try
            //    {
            //        var resource = Application.Current.FindResource(viewResult.ViewIconResourceKey);
            //        if (resource != null)
            //            iconBrush = (Brush) resource;
            //    }
            //    catch
            //    {
            //        iconBrush = Brushes.Transparent;
            //    }

            // If we respect local views and the view is in fact a local view, and we have a normal view already open, then we open it in a local way only.
            if (viewResult.ViewScope == ViewScope.Local && HandleLocalViewsSpecial && SelectedNormalView > -1)
            {
                var selectedView = NormalViews[SelectedNormalView];
                if (selectedView == null) return false;
                selectedView.LocalViews.Add(viewResult);
                if (viewResult.MakeViewVisibleOnLaunch)
                    selectedView.SelectedLocalViewIndex = selectedView.LocalViews.Count - 1;
                return true;
            }

            //Need to make sure we do not open more than allowed - Popups should not close underlying views.
            if (viewResult.ViewLevel != ViewLevel.Popup && MaximumTopLevelViewCount > -1)
            {
                var inplaceTopLevelviews = TopLevelViews.Where(v => v.TopLevelWindow == null).ToList();
                while (inplaceTopLevelviews.Count + 1 > MaximumTopLevelViewCount)
                {
                    CloseViewForModel(inplaceTopLevelviews[0].Model);
                    inplaceTopLevelviews.RemoveAt(0);
                }
            }

            TopLevelViews.Add(viewResult);

            if (viewResult.MakeViewVisibleOnLaunch && !(TopLevelViewLaunchMode == ViewLaunchMode.Popup || (TopLevelViewLaunchMode == ViewLaunchMode.InPlaceExceptPopups && viewResult.ViewLevel == ViewLevel.Popup)))
            {
                SelectedTopLevelView = TopLevelViews.Count - 1;
                SelectedTopLevelViewResult = SelectedTopLevelView > -1 ? TopLevelViews[SelectedTopLevelView] : null;
                if (viewResult.View != null)
                    if (!FocusHelper.FocusFirstControlDelayed(viewResult.View))
                        FocusHelper.FocusDelayed(viewResult.View);
            }
            TopLevelViewCount = TopLevelViews.Count;

            if (TopLevelViewLaunchMode == ViewLaunchMode.Popup || (TopLevelViewLaunchMode == ViewLaunchMode.InPlaceExceptPopups && viewResult.ViewLevel == ViewLevel.Popup))
            {
                var window = new Window
                    {
                        Title = viewResult.ViewTitle,
                        Content = viewResult.View,
                        DataContext = viewResult.Model,
                        WindowStartupLocation = WindowStartupLocation.CenterScreen,
                        Owner = this
                    };

                window.SetBinding(TitleProperty, new Binding("ViewTitle") { Source = viewResult });

                // Setting the size strategy
                var strategy = SimpleView.GetSizeStrategy(viewResult.View);
                switch (strategy)
                {
                    case ViewSizeStrategies.UseMinimumSizeRequired:
                        window.SizeToContent = SizeToContent.WidthAndHeight;
                        break;
                    case ViewSizeStrategies.UseMaximumSizeAvailable:
                        window.SizeToContent = SizeToContent.Manual;
                        window.Height = SystemParameters.WorkArea.Height;
                        window.Width = SystemParameters.WorkArea.Width;
                        break;
                    case ViewSizeStrategies.UseSuggestedSize:
                        window.SizeToContent = SizeToContent.Manual;
                        window.Height = SimpleView.GetSuggestedHeight(viewResult.View);
                        window.Width = SimpleView.GetSuggestedWidth(viewResult.View);
                        break;
                }

                viewResult.TopLevelWindow = window;

                if (context.Result is MessageBoxResult) window.SetResourceReference(StyleProperty, "CODE.Framework.Wpf.Mvvm.Shell-TopLevelMessageBoxWindowStyle");
                else window.SetResourceReference(StyleProperty, "CODE.Framework.Wpf.Mvvm.Shell-TopLevelWindowStyle");

                if (viewResult.View != null)
                    foreach (InputBinding binding in viewResult.View.InputBindings)
                        window.InputBindings.Add(binding);

                if (!FocusHelper.FocusFirstControlDelayed(window))
                    FocusHelper.FocusDelayed(window);
                
                if (viewResult.IsModal) window.ShowDialog();
                else window.Show();
            }


            //if (iconBrush != null)
            //{
            //    try
            //    {
            //        // TODO: Implement the icon logic
            //        //var iconRect = new Canvas {Height = 96, Width = 96, Background = iconBrush};
            //        //window.Icon = iconRect.ToIconSource();
            //    }
            //    catch
            //    {
            //    }
            //}

            return true;
        }
Example #8
0
        /// <summary>
        /// Opens a normal view in a separate window.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="viewResult">The view result.</param>
        private static void OpenNormalViewInWindow(RequestContext context, ViewResult viewResult)
        {
            var window = new Window
                {
                    Title = viewResult.ViewTitle,
                    SizeToContent = SizeToContent.WidthAndHeight,
                    Content = viewResult.View,
                    DataContext = viewResult.Model,
                    WindowStartupLocation = WindowStartupLocation.CenterScreen
                };

            window.SetBinding(TitleProperty, new Binding("ViewTitle") {Source = viewResult});

            var simpleView = viewResult.View as SimpleView;
            if (simpleView != null)
                if (SimpleView.GetSizeStrategy(simpleView) == ViewSizeStrategies.UseMaximumSizeAvailable)
                    window.SizeToContent = SizeToContent.Manual;
            
            viewResult.TopLevelWindow = window;
            if (context.Result is MessageBoxResult) window.SetResourceReference(StyleProperty, "CODE.Framework.Wpf.Mvvm.Shell-TopLevelMessageBoxWindowStyle");
            else window.SetResourceReference(StyleProperty, "CODE.Framework.Wpf.Mvvm.Shell-NormalLevelWindowStyle");
            if (viewResult.IsModal) window.ShowDialog();
            else window.Show();
        }