/// <summary> Конструктор </summary> public ViewPasswordBox(PasswordBoxTypeEnum windowType) { InitializeComponent(); _viewModelPasswordBox = new ViewModelPasswordBox(); var windowCaptionResourceKey = String.Empty; var buttonNameResourceKey = String.Empty; switch (windowType) { case PasswordBoxTypeEnum.Export: windowCaptionResourceKey = @"ViewPasswordBox_ExportEncryptionKey"; buttonNameResourceKey = @"ViewPasswordBox_Export"; break; case PasswordBoxTypeEnum.Import: windowCaptionResourceKey = @"ViewPasswordBox_ImportEncryptionKey"; buttonNameResourceKey = @"ViewPasswordBox_Import"; break; case PasswordBoxTypeEnum.ExportToClipboard: windowCaptionResourceKey = @"ViewPasswordBox_ExportEncryptionKey"; buttonNameResourceKey = @"ViewPasswordBox_Export"; break; case PasswordBoxTypeEnum.RegenerateKey: windowCaptionResourceKey = @"ViewPasswordBox_CreateNewKeyTitle"; buttonNameResourceKey = @"ViewPasswordBox_CreateNewKey"; break; } WindowCaptionResourceKey = windowCaptionResourceKey; EventButton.SetResourceReference(Button.ContentProperty, buttonNameResourceKey); DataContext = _viewModelPasswordBox; //Для установки focus-a на passwordbox при запуске окна с ViewPasswordBox. методы focus вызываемые внутри конструктора usercontrol-a не работают Dispatcher.BeginInvoke(new Action(() => { Keyboard.Focus(PasswordBoxUser); }), System.Windows.Threading.DispatcherPriority.Loaded); _viewModelPasswordBox.EventViewModel += ViewModelPasswordBoxOnEventViewModel; PasswordBoxUser.PasswordChanged += PasswordBoxUserOnPasswordChanged; }
/// <summary> Возвращает окно WindowStandard с ViewCallRedirect </summary> public static WindowStandard GetWindowPasswordBox(PasswordBoxTypeEnum windowType) { var windowDispacher = WindowDispacher.GetInstance; var result = windowDispacher.GetWindowByUserControl(typeof(ViewPasswordBox)) as WindowStandard; if (result != null) { return(result); } result = new WindowStandard(new ViewPasswordBox(windowType)) { MinWidth = 500, MinHeight = 200, Height = 200, Width = 500, WindowStartupLocation = WindowStartupLocation.CenterOwner, ResizeMode = ResizeMode.NoResize, ShowInTaskbar = false, }; result.Activated += (sender, args) => { windowDispacher.SetActiveWindow(result); }; windowDispacher.AddToListWindow(result); result.Closed += (sender, args) => { windowDispacher.DeleteToListWindow(result); }; return(result); }