public static void SetWidthFromItems(this ComboBox comboBox) { double comboBoxWidth = 19; ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(comboBox); IExpandCollapseProvider provider = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse); EventHandler eventHandler = null; eventHandler = new EventHandler(delegate { if (comboBox.IsDropDownOpen && comboBox.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { double width = 0; foreach (var item in comboBox.Items) { ComboBoxItem comboBoxItem = comboBox.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem; comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); if (comboBoxItem.DesiredSize.Width > width) { width = comboBoxItem.DesiredSize.Width; } } comboBox.Width = comboBoxWidth + width; comboBox.ItemContainerGenerator.StatusChanged -= eventHandler; comboBox.DropDownOpened -= eventHandler; provider.Collapse(); } }); comboBox.ItemContainerGenerator.StatusChanged += eventHandler; comboBox.DropDownOpened += eventHandler; provider.Expand(); }
public static void SetWidthFromItems(this ComboBox comboBox) { double comboBoxWidth = 19;// comboBox.DesiredSize.Width; // Create the peer and provider to expand the comboBox in code behind. ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(comboBox); IExpandCollapseProvider provider = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse); EventHandler eventHandler = null; eventHandler = new EventHandler(delegate { if (comboBox.IsDropDownOpen && comboBox.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { double width = 0; foreach (var item in comboBox.Items) { ComboBoxItem comboBoxItem = comboBox.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem; comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); if (comboBoxItem.DesiredSize.Width > width) { width = comboBoxItem.DesiredSize.Width; } } comboBox.Width = comboBoxWidth + width + 10; // Remove the event handler. comboBox.ItemContainerGenerator.StatusChanged -= eventHandler; comboBox.DropDownOpened -= eventHandler; provider.Collapse(); } }); comboBox.ItemContainerGenerator.StatusChanged += eventHandler; comboBox.DropDownOpened += eventHandler; // Expand the comboBox to generate all its ComboBoxItem's. provider.Expand(); }
public static async Task <bool> SimulateSetTextAsync(this ComboBox comboBox, JoinableTaskFactory joinableTaskFactory, string value) { if (value == null) { throw new ArgumentNullException(nameof(value)); } await joinableTaskFactory.SwitchToMainThreadAsync(); if (comboBox.Text == value) { return(true); } if (!comboBox.IsEditable) { throw new InvalidOperationException("The combo box is not editable."); } if (!comboBox.IsEnabled || !comboBox.IsVisible) { return(false); } IValueProvider valueProvider = new ComboBoxAutomationPeer(comboBox); valueProvider.SetValue(value); // Wait for changes to propagate await Task.Yield(); return(true); }
public static async Task <bool> SimulateExpandAsync( this ComboBox comboBox, JoinableTaskFactory joinableTaskFactory ) { await joinableTaskFactory.SwitchToMainThreadAsync(); if (comboBox.IsDropDownOpen) { return(true); } if (!comboBox.IsEnabled || !comboBox.IsVisible) { return(false); } IExpandCollapseProvider expandCollapseProvider = new ComboBoxAutomationPeer(comboBox); expandCollapseProvider.Expand(); // Wait for changes to propagate await Task.Yield(); return(true); }
public static async Task <bool> SimulateSelectItemAsync( this ComboBox comboBox, JoinableTaskFactory joinableTaskFactory, string itemText, bool mustExist = true ) { await joinableTaskFactory.SwitchToMainThreadAsync(); if (comboBox.Text == itemText) { return(true); } if (!await comboBox.SimulateExpandAsync(joinableTaskFactory)) { return(false); } var peer = new ComboBoxAutomationPeer(comboBox); var children = peer.GetChildren().OfType <ListBoxItemAutomationPeer>().ToList(); var existingItem = children.Find(x => x.GetName() == itemText); if (existingItem is null) { if (mustExist) { throw new InvalidOperationException( $"Item '{itemText}' was not found in the combo box." ); } // Collapse the combo box, and then set the value explicitly if ( !await comboBox.SimulateCollapseAsync(joinableTaskFactory) || !await comboBox.SimulateSetTextAsync(joinableTaskFactory, itemText) ) { return(false); } return(true); } else { ISelectionItemProvider selectionItemProvider = existingItem; selectionItemProvider.Select(); // Wait for changes to propagate await Task.Yield(); if (!await comboBox.SimulateCollapseAsync(joinableTaskFactory)) { return(false); } return(true); } }
//public string i9DrowndownType //{ // get { return (string)base.GetValue(i9DrowndownTypeProperty); } // set { base.SetValue(i9DrowndownTypeProperty, value); } //} //public string i9BindColumn //{ // get { return (string)base.GetValue(i9BindColumnProperty); } // set { base.SetValue(i9BindColumnProperty, value); } //} protected override void OnGotFocus(System.Windows.RoutedEventArgs e) { base.OnGotFocus(e); ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(this); List <AutomationPeer> children = peer.GetChildren(); if (children != null && children.Count == 1 && children[0] is TextBoxAutomationPeer) { ((TextBox)((TextBoxAutomationPeer)children[0]).Owner).MaxLength = maxLength; } }
private void OnLoaded(object sender, RoutedEventArgs e) { var desiredWidth = AssociatedObject.DesiredSize.Width; // Create the peer and provider to expand the comboBox in code behind. var peer = new ComboBoxAutomationPeer(AssociatedObject); var provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider; if (provider == null) { return; } EventHandler[] handler = { null }; // array usage prevents access to modified closure handler[0] = new EventHandler(delegate { if (!AssociatedObject.IsDropDownOpen || AssociatedObject.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) { return; } double largestWidth = 0; foreach (var item in AssociatedObject.Items) { var comboBoxItem = AssociatedObject.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem; if (comboBoxItem == null) { continue; } comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); if (comboBoxItem.DesiredSize.Width > largestWidth) { largestWidth = comboBoxItem.DesiredSize.Width; } } AssociatedObject.Width = desiredWidth + largestWidth; // Remove the event handler. AssociatedObject.ItemContainerGenerator.StatusChanged -= handler[0]; AssociatedObject.DropDownOpened -= handler[0]; provider.Collapse(); }); AssociatedObject.ItemContainerGenerator.StatusChanged += handler[0]; AssociatedObject.DropDownOpened += handler[0]; // Expand the comboBox to generate all its ComboBoxItem's. provider.Expand(); }
public static void SetWidthFromItems(this ComboBox comboBox) { const double comboBoxWidth = 19; // comboBox.DesiredSize.Width; // Create the peer and provider to expand the comboBox in code behind. ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(comboBox); IExpandCollapseProvider provider = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse); EventHandler eventHandler = null; eventHandler = delegate { if (comboBox.IsDropDownOpen && comboBox.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated) { double width = 0; foreach (var item in comboBox.Items) { ComboBoxItem comboBoxItem = comboBox.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem; if (comboBoxItem != null) { comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); if (comboBoxItem.DesiredSize.Width > width) { width = comboBoxItem.DesiredSize.Width; } } } comboBox.Width = comboBoxWidth + width; // Remove the event handler. comboBox.ItemContainerGenerator.StatusChanged -= eventHandler; comboBox.DropDownOpened -= eventHandler; provider?.Collapse(); } }; comboBox.ItemContainerGenerator.StatusChanged += eventHandler; comboBox.DropDownOpened += eventHandler; // Expand the comboBox to generate all its ComboBoxItem's. provider?.Expand(); }
private void demoMode() // DemoMode.DemoModeWindow demoModeWindow { #region unos učionice Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = "\nI - Dodavanje učionice\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Kliknemo na dugme Dodaj učionicu u gornjem desnom uglu ekrana\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { ButtonAutomationPeer peer = new ButtonAutomationPeer(dodajUcionicuDugme); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; peer.SetFocus(); invokeProv.Invoke(); }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Kliknemo na polje identifikatora učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Identificator); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Unesemo identifikator nove učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ClassroomForma.Identificator.Text = "L-52"; }); Thread.Sleep(2000); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Kliknemo na polje opisa učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Description); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Unesemo opis učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ClassroomForma.Description.Text = "Opis učionice"; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Unesemo broj radnika\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(2500); Dispatcher.Invoke(() => { ClassroomForma.brojMijestaUpDown.Value = 3; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Odaberemo operativni sistem\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(ClassroomForma.OperatingSystem); peer.SetFocus(); IExpandCollapseProvider provider = (IExpandCollapseProvider) peer.GetPattern(PatternInterface.ExpandCollapse); provider.Expand(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ClassroomForma.OperatingSystem.SelectedIndex = 2; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(ClassroomForma.OperatingSystem); peer.SetFocus(); IExpandCollapseProvider provider = (IExpandCollapseProvider) peer.GetPattern(PatternInterface.ExpandCollapse); provider.Collapse(); }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Odaberemo instalirani softver iz liste\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(5500); Dispatcher.Invoke(() => { ListBoxAutomationPeer peer = new ListBoxAutomationPeer(ClassroomForma.SoftwaresList); peer.SetFocus(); ClassroomForma.SoftwaresList.SelectedIndex = 2; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ClassroomForma.SoftwaresList.SelectedIndex = 4; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Označimo opremu koja postoji. Tablu nemamo, ali imamo projektor\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(5500); Dispatcher.Invoke(() => { ClassroomForma.TableNeeded.IsChecked = false; ClassroomForma.ProjectorNeeded.IsChecked = true; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Potvrdimo unos\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { ButtonAutomationPeer peer = new ButtonAutomationPeer(ClassroomForma.Potvrda); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ButtonAutomationPeer peer = new ButtonAutomationPeer(ClassroomForma.Potvrda); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; invokeProv.Invoke(); demoModeWindow.demoNumber = 0; }); Thread.Sleep(1000); Console.WriteLine("444444444444"); #endregion unos učionice #region pregled učionica Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = "\nII Pregled učionica\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Odaberemo meni Tabele\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { MenuItemAutomationPeer peer = new MenuItemAutomationPeer(this.MeniTabele); IExpandCollapseProvider provider = (IExpandCollapseProvider) peer.GetPattern(PatternInterface.ExpandCollapse); provider.Expand(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Odaberemo stavku Učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { MenuItemAutomationPeer peer = new MenuItemAutomationPeer(this.MeniItemUcionice); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { MenuItemAutomationPeer peer = new MenuItemAutomationPeer(this.MeniItemUcionice); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; peer.SetFocus(); invokeProv.Invoke(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Sada vidimo tabelu sa učionicama" + " gdje možemo svaku od njih obrisati ili izmijeniti\n\n" + demoModeWindow.currentDemoDescription.Text; }); #endregion #region izmjena učionice Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = "\nIII Izmjena učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(4000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Izmijenićemo jednu učionicu, klikom na dugme Izmijeni u prvom redu\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(4000); Dispatcher.Invoke(() => { this.ClassroomTabela.ClassroomsList.SelectedItem = 1; ClassroomHandler.Instance.SetSelectedClassroom(ClassroomTabela.Classrooms[0], (MainWindow)Window.GetWindow(this)); ((MainWindow)Window.GetWindow(this)).NovaUcionica_Show(); }); Thread.Sleep(4000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Kliknemo na polje opisa učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Description); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Unesemo novi opis učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ClassroomForma.Description.Text = "Novi opis za L-42"; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Izmijenimo postojeću opremu. Kupili smo pametnu tablu.\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(5000); Dispatcher.Invoke(() => { ClassroomForma.SmartTableNeeded.IsChecked = true; }); Thread.Sleep(2000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Potvrdimo unos.\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { ButtonAutomationPeer peer = new ButtonAutomationPeer(ClassroomForma.Potvrda); peer.SetFocus(); }); Thread.Sleep(2000); Dispatcher.Invoke(() => { ButtonAutomationPeer peer = new ButtonAutomationPeer(ClassroomForma.Potvrda); IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider; invokeProv.Invoke(); }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Nakon unosa ponovo vidimo prikaz svih učionica, te možemo vidjeti " + "da je njen identifikator izmijenjen.\n\n" + demoModeWindow.currentDemoDescription.Text; demoModeWindow.demoNumber = 0; }); Thread.Sleep(5000); #endregion #region brisanje učionice Dispatcher.Invoke(() => { demoModeWindow.demoNumber = 0; demoModeWindow.currentDemoDescription.Text = "\nIV Brisanje učionice\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(3000); Dispatcher.Invoke(() => { demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Obrisaćemo jednu učionicu, recimo prvu, klikom na dugme Obriši u prvom redu\n\n" + demoModeWindow.currentDemoDescription.Text; }); Thread.Sleep(4000); Dispatcher.Invoke(() => { this.ClassroomTabela.ClassroomsList.SelectedItem = 1; ClassroomHandler.Instance.SetSelectedClassroom(ClassroomTabela.Classrooms[0], (MainWindow)Window.GetWindow(this)); ClassroomHandler.Instance.Remove(ClassroomHandler.Instance.SelectedClassroom.Id, (MainWindow)Window.GetWindow(this)); }); Thread.Sleep(4000); #endregion }