/// <summary> /// Initializes a new instance of the <see cref="RibbonWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> public RibbonWindow(IViewModel viewModel) { var viewModelType = (viewModel != null) ? viewModel.GetType() : GetViewModelType(); if (viewModelType == null) { var viewModelLocator = ServiceLocator.Default.ResolveType <IViewModelLocator>(); viewModelType = viewModelLocator.ResolveViewModel(GetType()); if (viewModelType == null) { const string error = "The view model of the view could not be resolved. Use either the GetViewModelType() method or IViewModelLocator"; throw new NotSupportedException(error); } } _logic = new WindowLogic(this, viewModelType, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); SetBinding(TitleProperty, new Binding("Title")); }
public Restorebutton() { InitializeComponent(); PreviewMouseLeftButtonDown += delegate { MouseOverAnimations.AltInterfacePreviewMouseOver(PolyFill, BorderBrushKey); }; MouseLeftButtonUp += delegate { WindowLogic.Fullscreen_Restore(); }; MouseEnter += delegate { if (!Properties.Settings.Default.Fullscreen) { ToolTip = Application.Current.Resources["Fullscreen"]; } else { ToolTip = Application.Current.Resources["RestoreDown"]; } MouseOverAnimations.AltInterfaceMouseOver(PolyFill, CanvasBGcolor, BorderBrushKey); }; MouseLeave += delegate { MouseOverAnimations.AltInterfaceMouseLeave(PolyFill, CanvasBGcolor, BorderBrushKey); }; }
public FullscreenButton() { InitializeComponent(); PreviewMouseLeftButtonDown += delegate { PreviewMouseButtonDownAnim(FullscreenButtonBrush); }; MouseEnter += delegate { if (Properties.Settings.Default.Fullscreen) { ToolTip = Application.Current.Resources["RestoreDown"]; } else { ToolTip = Application.Current.Resources["Fullscreen"]; } ButtonMouseOverAnim(FullscreenButtonBrush, true); }; MouseLeave += delegate { ButtonMouseLeaveAnim(FullscreenButtonBrush, true); }; TheButton.Click += delegate { WindowLogic.Fullscreen_Restore(); }; }
/// <summary> /// Initializes a new instance of the <see cref="MainWindow"/> class. /// </summary> public MainWindow() { InitializeComponent(); InitializeMainWindow(); _windowLogic = new WindowLogic(this, typeof(MainWindowViewModel)); _windowLogic.ViewModelChanged += (s, e) => { ViewModelChanged.SafeInvoke(this, e); PropertyChanged.SafeInvoke(this, new PropertyChangedEventArgs("ViewModel")); }; _windowLogic.ViewModelPropertyChanged += (s, e) => ViewModelPropertyChanged.SafeInvoke(this, e); // _windowLogic.TargetControlPropertyChanged += (s, e) => PropertyChanged.SafeInvoke(this, new AdvancedPropertyChangedEventArgs(s, this, e.PropertyName, e.OldValue, e.NewValue)); var serviceLocator = ServiceLocator.Default; serviceLocator.RegisterInstance(this); serviceLocator.RegisterInstance(ribbon); serviceLocator.RegisterInstance(dockingManager); serviceLocator.RegisterInstance(layoutDocumentPane); ribbon.AutomaticStateManagement = true; ribbon.EnsureTabItem("Home"); Loaded += (sender, e) => { traceOutputAnchorable.Hide(); }; }
/// <summary> /// Initializes a new instance of the <see cref="RibbonWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> public RibbonWindow(IViewModel viewModel) { var viewModelType = (viewModel != null) ? viewModel.GetType() : GetViewModelType(); if (viewModelType == null) { var viewModelLocator = ServiceLocator.Default.ResolveType<IViewModelLocator>(); viewModelType = viewModelLocator.ResolveViewModel(GetType()); if (viewModelType == null) { const string error = "The view model of the view could not be resolved. Use either the GetViewModelType() method or IViewModelLocator"; throw new NotSupportedException(error); } } _logic = new WindowLogic(this, viewModelType, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); SetBinding(TitleProperty, new Binding("Title")); }
/// <summary> /// Initializes a new instance of the <see cref="SimpleDataWindow" /> class. /// </summary> /// <param name="viewModel">The view model.</param> /// <param name="mode">The data window mode.</param> /// <param name="additionalButtons">The additional buttons.</param> /// <exception cref="System.NotSupportedException"></exception> protected SimpleDataWindow(IViewModel viewModel, DataWindowMode mode = DataWindowMode.OkCancel, IEnumerable <DataWindowButton> additionalButtons = null) { if (CatelEnvironment.IsInDesignMode) { return; } ThemeHelper.EnsureCatelMvvmThemeIsLoaded(); _logic = new WindowLogic(this, null, viewModel); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); if (additionalButtons != null) { foreach (var button in additionalButtons) { _buttons.Add(button); } } var languageService = ServiceLocator.Default.ResolveType <ILanguageService>(); if (mode == DataWindowMode.OkCancel || mode == DataWindowMode.OkCancelApply) { var button = DataWindowButton.FromAsync(languageService.GetString("OK"), OnOkExecuteAsync, OnOkCanExecute); button.IsDefault = true; _buttons.Add(button); } if (mode == DataWindowMode.OkCancel || mode == DataWindowMode.OkCancelApply) { var button = DataWindowButton.FromAsync(languageService.GetString("Cancel"), OnCancelExecuteAsync, OnCancelCanExecute); button.IsCancel = true; _buttons.Add(button); } if (mode == DataWindowMode.OkCancelApply) { var button = DataWindowButton.FromSync(languageService.GetString("Apply"), OnApplyExecute, OnApplyCanExecute); _buttons.Add(button); } if (mode == DataWindowMode.Close) { var button = DataWindowButton.FromSync(languageService.GetString("Close"), OnCloseExecute, null); _buttons.Add(button); } // Call manually the first time (for injected view models) OnViewModelChanged(); this.FixBlurriness(); }
internal static void Bar_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (LoadWindows.GetMainWindow.TitleText.IsFocused) { return; } WindowLogic.Move(sender, e); Refocus(); e.Handled = true; // Disable text clicking }
// Событие на клик кнопки войти private void authorization_click(object sender, RoutedEventArgs e) { // Открываем окно, в зависимости от типа пользователя, который проходит авторизацию (или не проходит) по логику и паролю bool opened = WindowLogic.OpenWindow(UserLogic.Authorization(loginbox.Text, passbox.Password)); // Если окно открыто, то закрой текущее окно if (opened == true) { this.Close(); } }
/// <summary> /// Initializes a new instance of the <see cref="SimpleDataWindow" /> class. /// </summary> /// <param name="viewModel">The view model.</param> /// <param name="mode">The data window mode.</param> /// <param name="additionalButtons">The additional buttons.</param> /// <exception cref="System.NotSupportedException"></exception> protected SimpleDataWindow(IViewModel viewModel, DataWindowMode mode = DataWindowMode.OkCancel, IEnumerable <DataWindowButton> additionalButtons = null) { _logic = new WindowLogic(this, null, viewModel); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); if (additionalButtons != null) { foreach (var button in additionalButtons) { _buttons.Add(button); } } if (mode == DataWindowMode.OkCancel || mode == DataWindowMode.OkCancelApply) { var button = new DataWindowButton("Ok", async() => await OnOkExecuteAsync(), OnOkCanExecute); button.IsDefault = true; _buttons.Add(button); } if (mode == DataWindowMode.OkCancel || mode == DataWindowMode.OkCancelApply) { var button = new DataWindowButton("Cancel", async() => await OnCancelExecuteAsync(), OnCancelCanExecute); button.IsCancel = true; _buttons.Add(button); } if (mode == DataWindowMode.OkCancelApply) { var button = new DataWindowButton("Apply", OnApplyExcute, OnApplyCanExecute); _buttons.Add(button); } if (mode == DataWindowMode.Close) { var button = new DataWindowButton("Close", OnCloseExecute); _buttons.Add(button); } // Call manually the first time (for injected view models) OnViewModelChanged(); this.FixBlurriness(); }
public RodskaWindow(IViewModel viewModel) { _logic = new WindowLogic(this, null, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.Invoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.Invoke(this, e); Loaded += (sender, e) => EViewLoaded.Invoke(this, e); Unloaded += (sender, e) => EViewUnloaded.Invoke(this, e); this.AddDataContextChangedHandler((sender, e) => EViewDataContextChanged.Invoke(this, new Catel.MVVM.Views.DataContextChangedEventArgs(e.OldValue, e.NewValue))); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); }
/// <summary> /// Initializes a new instance of the <see cref="RibbonWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> public RibbonWindow(IViewModel viewModel) { _logic = new WindowLogic(this, null, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); this.FixBlurriness(); }
/// <summary> /// Initializes a new instance of the <see cref="RibbonWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> public RibbonWindow(IViewModel viewModel) { _logic = new WindowLogic(this, null, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); SetBinding(TitleProperty, new Binding("Title")); ((Window)this).ApplyApplicationIcon(); FixMaximize.SetFixMaximize(this, true); }
/// <summary> /// Initializes a new instance of the <see cref="MetroDataWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> protected MetroDataWindow(IViewModel viewModel) { _logic = new WindowLogic(this, null, viewModel); _logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e); _logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e); _logic.PropertyChanged += (sender, e) => PropertyChanged.SafeInvoke(this, e); Loaded += (sender, e) => _viewLoaded.SafeInvoke(this); Unloaded += (sender, e) => _viewUnloaded.SafeInvoke(this); DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // Because the RadWindow does not close when DialogResult is set, the following code is required ViewModelChanged += (sender, e) => OnViewModelChanged(); // Call manually the first time (for injected view models) OnViewModelChanged(); WindowStartupLocation = WindowStartupLocation.CenterScreen; this.ApplyIconFromApplication(); EnableDWMDropShadow = true; }
internal static void LoadLayout() { if (UC.GetPicGallery == null) { UC.GetPicGallery = new UserControls.PicGallery { Opacity = 0, Visibility = Visibility.Collapsed }; LoadWindows.GetMainWindow.ParentContainer.Children.Add(UC.GetPicGallery); Panel.SetZIndex(UC.GetPicGallery, 999); } if (picGalleryItem_Size == 0) { SetSize(); } if (Properties.Settings.Default.PicGallery == 1) { if (Properties.Settings.Default.Fullscreen) { UC.GetPicGallery.Width = WindowLogic.MonitorInfo.Width; UC.GetPicGallery.Height = WindowLogic.MonitorInfo.Height; } else if (Properties.Settings.Default.ShowInterface) { UC.GetPicGallery.Width = LoadWindows.GetMainWindow.Width - 15; UC.GetPicGallery.Height = LoadWindows.GetMainWindow.ActualHeight - 70; } else { UC.GetPicGallery.Width = LoadWindows.GetMainWindow.ActualWidth - 2; UC.GetPicGallery.Height = LoadWindows.GetMainWindow.ActualHeight - 2; // 2px for borders } UC.GetPicGallery.HorizontalAlignment = HorizontalAlignment.Stretch; UC.GetPicGallery.Scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible; UC.GetPicGallery.Scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled; UC.GetPicGallery.x2.Visibility = Visibility.Visible; UC.GetPicGallery.Container.Margin = new Thickness(0, 65, 0, 0); } else { UC.GetPicGallery.Width = picGalleryItem_Size + 14; // 17 for scrollbar width + 2 for borders UC.GetPicGallery.Height = WindowLogic.MonitorInfo.WorkArea.Height; LoadWindows.GetMainWindow.SizeToContent = SizeToContent.WidthAndHeight; LoadWindows.GetMainWindow.ResizeMode = ResizeMode.CanMinimize; WindowLogic.CenterWindowOnScreen(); UC.GetPicGallery.HorizontalAlignment = HorizontalAlignment.Right; UC.GetPicGallery.Scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled; UC.GetPicGallery.Scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; UC.GetPicGallery.x2.Visibility = Visibility.Collapsed; UC.GetPicGallery.Container.Margin = new Thickness(0, 0, 0, 0); ShowNavigation(false); ShowTopandBottom(false); ConfigureSettings.ConfigColors.UpdateColor(true); } UC.GetPicGallery.Visibility = Visibility.Visible; UC.GetPicGallery.Opacity = 1; UC.GetPicGallery.Container.Orientation = Orientation.Vertical; IsOpen = true; }
/// <summary> /// Initializes a new instance of the <see cref="DataWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> /// <param name="mode"><see cref="DataWindowMode"/>.</param> /// <param name="additionalButtons">The additional buttons.</param> /// <param name="defaultButton">The default button.</param> /// <param name="setOwnerAndFocus">if set to <c>true</c>, set the main window as owner window and focus the window.</param> /// <param name="infoBarMessageControlGenerationMode">The info bar message control generation mode.</param> public MetroDataWindow(IViewModel viewModel, DataWindowMode mode, IEnumerable <DataWindowButton> additionalButtons = null, DataWindowDefaultButton defaultButton = DataWindowDefaultButton.OK, bool setOwnerAndFocus = true, InfoBarMessageControlGenerationMode infoBarMessageControlGenerationMode = InfoBarMessageControlGenerationMode.Inline) { if (CatelEnvironment.IsInDesignMode) { return; } Mode = mode; DefaultButton = defaultButton; _infoBarMessageControlGenerationMode = infoBarMessageControlGenerationMode; this.FixBlurriness(); SizeToContent = SizeToContent.WidthAndHeight; ShowInTaskbar = false; ResizeMode = ResizeMode.NoResize; WindowStartupLocation = WindowStartupLocation.CenterOwner; BorderThickness = new Thickness(1d); BorderBrush = Orchestra.ThemeHelper.GetAccentColorBrush(); this.ApplyIconFromApplication(); ThemeHelper.EnsureCatelMvvmThemeIsLoaded(); _logic = new WindowLogic(this, null, viewModel); _logic.TargetViewPropertyChanged += (sender, e) => { // Do not call this for ActualWidth and ActualHeight WPF, will cause problems with NET 40 // on systems where NET45 is *not* installed if (!string.Equals(e.PropertyName, "ActualWidth", StringComparison.InvariantCulture) && !string.Equals(e.PropertyName, "ActualHeight", StringComparison.InvariantCulture)) { PropertyChanged.SafeInvoke(this, e); } }; _logic.ViewModelClosedAsync += OnViewModelClosedAsync; _logic.ViewModelChanged += (sender, e) => RaiseViewModelChanged(); _logic.ViewModelPropertyChanged += (sender, e) => { OnViewModelPropertyChanged(sender, e); ViewModelPropertyChanged.SafeInvoke(this, e); }; Loaded += (sender, e) => { _viewLoaded.SafeInvoke(this); OnLoaded(e); }; Unloaded += (sender, e) => { _viewUnloaded.SafeInvoke(this); OnUnloaded(e); }; SetBinding(TitleProperty, new Binding("Title")); if (additionalButtons != null) { foreach (var button in additionalButtons) { _buttons.Add(button); } } CanClose = true; CanCloseUsingEscape = true; Loaded += (sender, e) => Initialize(); Closing += OnDataWindowClosing; DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); if (setOwnerAndFocus) { this.SetOwnerWindowAndFocus(); } else { this.FocusFirstControl(); } }
/// <summary> /// Initializes a new instance of the <see cref="DataWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> /// <param name="mode"><see cref="DataWindowMode"/>.</param> /// <param name="additionalButtons">The additional buttons.</param> /// <param name="defaultButton">The default button.</param> /// <param name="setOwnerAndFocus">if set to <c>true</c>, set the main window as owner window and focus the window.</param> /// <param name="infoBarMessageControlGenerationMode">The info bar message control generation mode.</param> /// <param name="focusFirstControl">if set to <c>true</c>, the first control will get the focus.</param> public DataWindow(IViewModel viewModel, DataWindowMode mode, IEnumerable <DataWindowButton> additionalButtons = null, DataWindowDefaultButton defaultButton = DataWindowDefaultButton.OK, bool setOwnerAndFocus = true, InfoBarMessageControlGenerationMode infoBarMessageControlGenerationMode = InfoBarMessageControlGenerationMode.Inline, bool focusFirstControl = true) { if (CatelEnvironment.IsInDesignMode) { return; } // Set window style (WPF doesn't allow styling on root elements of XAML files, too bad) // For more info, see http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3059c0e4-c372-4da2-b384-28f271feef05/ SetResourceReference(StyleProperty, typeof(DataWindow)); Mode = mode; DefaultButton = defaultButton; _infoBarMessageControlGenerationMode = infoBarMessageControlGenerationMode; this.FixBlurriness(); SizeToContent = SizeToContent.WidthAndHeight; ShowInTaskbar = false; ResizeMode = ResizeMode.NoResize; WindowStartupLocation = WindowStartupLocation.CenterOwner; this.ApplyIconFromApplication(); ThemeHelper.EnsureCatelMvvmThemeIsLoaded(); _logic = new WindowLogic(this, null, viewModel); _logic.TargetViewPropertyChanged += (sender, e) => { // Do not call this for ActualWidth and ActualHeight WPF, will cause problems with NET 40 // on systems where NET45 is *not* installed if (!string.Equals(e.PropertyName, nameof(ActualWidth), StringComparison.InvariantCulture) && !string.Equals(e.PropertyName, nameof(ActualHeight), StringComparison.InvariantCulture)) { PropertyChanged?.Invoke(this, e); } }; _logic.ViewModelClosedAsync += OnViewModelClosedAsync; _logic.ViewModelChanged += (sender, e) => RaiseViewModelChanged(); _logic.ViewModelPropertyChanged += (sender, e) => { OnViewModelPropertyChanged(sender, e); ViewModelPropertyChanged?.Invoke(this, e); }; Loaded += (sender, e) => { _viewLoaded?.Invoke(this, EventArgs.Empty); OnLoaded(e); }; Unloaded += (sender, e) => { _viewUnloaded?.Invoke(this, EventArgs.Empty); OnUnloaded(e); }; SetBinding(TitleProperty, new Binding("Title")); if (additionalButtons != null) { foreach (var button in additionalButtons) { _buttons.Add(button); } } CanClose = true; CanCloseUsingEscape = true; Loaded += (sender, e) => Initialize(); DataContextChanged += (sender, e) => _viewDataContextChanged?.Invoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); // #1150 Subscribe in dispatcher to allow derived types to be the first handler Dispatcher.BeginInvoke(() => { Closing += OnDataWindowClosing; }); _focusFirstControl = focusFirstControl; if (setOwnerAndFocus) { this.SetOwnerWindowAndFocus(focusFirstControl: focusFirstControl); } else if (focusFirstControl) { this.FocusFirstControl(); } }
/// <summary> /// Initializes a new instance of the <see cref="DataWindow"/> class. /// </summary> /// <param name="viewModel">The view model.</param> /// <param name="mode"><see cref="DataWindowMode"/>.</param> /// <param name="additionalButtons">The additional buttons.</param> /// <param name="defaultButton">The default button.</param> /// <param name="setOwnerAndFocus">if set to <c>true</c>, set the main window as owner window and focus the window.</param> /// <param name="infoBarMessageControlGenerationMode">The info bar message control generation mode.</param> public DataWindow(IViewModel viewModel, DataWindowMode mode, IEnumerable<DataWindowButton> additionalButtons = null, DataWindowDefaultButton defaultButton = DataWindowDefaultButton.OK, bool setOwnerAndFocus = true, InfoBarMessageControlGenerationMode infoBarMessageControlGenerationMode = InfoBarMessageControlGenerationMode.Inline) { // Set window style (WPF doesn't allow styling on root elements of XAML files, too bad) // For more info, see http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3059c0e4-c372-4da2-b384-28f271feef05/ #if SILVERLIGHT Style dataWindowStyle = null; if (this.TryFindResource(typeof(DataWindow), out dataWindowStyle)) { DefaultStyleKey = typeof (DataWindow); //Style = dataWindowStyle; } #else SetResourceReference(StyleProperty, typeof(DataWindow)); #endif Mode = mode; DefaultButton = defaultButton; _infoBarMessageControlGenerationMode = infoBarMessageControlGenerationMode; if (Catel.Environment.IsInDesignMode) { return; } #if NET SizeToContent = SizeToContent.WidthAndHeight; ShowInTaskbar = false; ResizeMode = ResizeMode.NoResize; WindowStartupLocation = WindowStartupLocation.CenterOwner; SnapsToDevicePixels = true; #endif var viewModelType = (viewModel != null) ? viewModel.GetType() : GetViewModelType(); if (viewModelType == null) { Log.Debug("GetViewModelType() returned null, using the ViewModelLocator to resolve the view model"); viewModelType = _viewModelLocator.ResolveViewModel(GetType()); if (viewModelType == null) { const string error = "The view model of the view could not be resolved. Use either the GetViewModelType() method or IViewModelLocator"; Log.Error(error); throw new NotSupportedException(error); } } _logic = new WindowLogic(this, viewModelType, viewModel); _logic.TargetControlPropertyChanged += (sender, e) => { #if !NET // WPF already calls this method automatically OnPropertyChanged(e.FxEventArgs); PropertyChanged.SafeInvoke(this, new PropertyChangedEventArgs(e.PropertyName)); #else // Do not call this for ActualWidth and ActualHeight WPF, will cause problems with NET 40 // on systems where NET45 is *not* installed if (!string.Equals(e.PropertyName, "ActualWidth", StringComparison.InvariantCulture) && !string.Equals(e.PropertyName, "ActualHeight", StringComparison.InvariantCulture)) { PropertyChanged.SafeInvoke(this, new PropertyChangedEventArgs(e.PropertyName)); } #endif }; _logic.ViewModelChanged += (sender, e) => { OnViewModelChanged(); ViewModelChanged.SafeInvoke(this, e); PropertyChanged.SafeInvoke(this, new PropertyChangedEventArgs("ViewModel")); }; _logic.ViewModelPropertyChanged += (sender, e) => { OnViewModelPropertyChanged(sender, e); ViewModelPropertyChanged.SafeInvoke(this, e); }; _logic.DetermineViewModelInstance += (sender, e) => { e.ViewModel = GetViewModelInstance(e.DataContext); }; _logic.DetermineViewModelType += (sender, e) => { e.ViewModelType = GetViewModelType(e.DataContext); }; _logic.ViewModelClosed += OnViewModelClosed; SetBinding(TitleProperty, new Binding("Title")); if (additionalButtons != null) { foreach (var button in additionalButtons) { _buttons.Add(button); } } CanClose = true; CanCloseUsingEscape = true; Loaded += (sender, e) => Initialize(); Closing += OnDataWindowClosing; Loaded += (sender, e) => OnLoaded(e); Unloaded += (sender, e) => OnUnloaded(e); #if NET if (setOwnerAndFocus) { this.SetOwnerWindowAndFocus(); } else { this.FocusFirstControl(); } #endif }
public ShellViewBase(IViewModel viewModel) { if (AppEnvironment.IsInDesignMode) { return; } //IRegionManager regionManager =Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<IRegionManager>(); //var viewModelType = (viewModel != null) ? viewModel.GetType() : GetViewModelType(); //if (viewModelType == null) //{ // var viewModelLocator = ServiceLocator.Default.ResolveType<IViewModelLocator>(); // viewModelType = viewModelLocator.ResolveViewModel(GetType()); // if (viewModelType == null) // { // const string error = "The view model of the view could not be resolved. Use either the GetViewModelType() method or IViewModelLocator"; // throw new NotSupportedException(error); // } //} var serviceLocator = ServiceLocator.Default; serviceLocator.RegisterInstance <ShellViewBase>(this); _windowLogic = new WindowLogic(this, null, viewModel); _windowLogic.ViewModelPropertyChanged += (s, e) => { // Do not call this for ActualWidth and ActualHeight WPF, will cause problems with NET 40 // on systems where NET45 is *not* installed if (!string.Equals(e.PropertyName, "ActualWidth", StringComparison.InvariantCulture) && !string.Equals(e.PropertyName, "ActualHeight", StringComparison.InvariantCulture)) { PropertyChanged.SafeInvoke(this, e); } }; _windowLogic.ViewModelClosed += OnViewModelClosed; _windowLogic.ViewModelChanged += (sender, e) => RaiseViewModelChanged(); _windowLogic.ViewModelPropertyChanged += (sender, e) => { OnViewModelPropertyChanged(sender, e); ViewModelPropertyChanged.SafeInvoke(this, e); }; Loaded += (sender, e) => { _viewLoaded.SafeInvoke(this); //OnLoaded(e); }; Unloaded += (sender, e) => { _viewUnloaded.SafeInvoke(this); //OnUnloaded(e); }; SetBinding(TitleProperty, new Binding("Title")); Loaded += (sender, e) => Initialize(); Closing += OnDataWindowClosing; DataContextChanged += (sender, e) => _viewDataContextChanged.SafeInvoke(this, new DataContextChangedEventArgs(e.OldValue, e.NewValue)); //eventAggregator = (IEventAggregator)serviceLocator.GetService(typeof(IEventAggregator)); //Loaded += (sender, e) => //{ // string inputFilePathName = GloableStaticInstanse.StartupInputFilePathName; // if (!string.IsNullOrEmpty(inputFilePathName)) // { // System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => ((MetaShellViewModel)ViewModel).PackageService.Open(inputFilePathName))); // } //}; }