Change ComboBox border color
This commit is contained in:
@ -6,19 +6,43 @@ using System.Windows.Media;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Controls.Primitives;
|
||||
|
||||
namespace WGneu.Helpers {
|
||||
public static class Utils {
|
||||
public static void SetInputChanged(Control input) {
|
||||
input.BorderBrush = Brushes.Orange;
|
||||
var brush = Brushes.Orange;
|
||||
if (input is ComboBox cb) {
|
||||
var border = GetComboBoxBorder(cb);
|
||||
if (border != null)
|
||||
border.BorderBrush = brush;
|
||||
} else {
|
||||
input.BorderBrush = brush;
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetInputInvalid(Control input) {
|
||||
input.BorderBrush = Brushes.Red;
|
||||
var brush = Brushes.Red;
|
||||
if (input is ComboBox cb) {
|
||||
var border = GetComboBoxBorder(cb);
|
||||
if (border != null)
|
||||
border.BorderBrush = brush;
|
||||
} else {
|
||||
input.BorderBrush = brush;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ClearInputState(Control input) {
|
||||
input.ClearValue(Control.BorderBrushProperty);
|
||||
if (input is ComboBox cb) {
|
||||
GetComboBoxBorder(cb)?.ClearValue(Border.BorderBrushProperty);
|
||||
} else {
|
||||
input.ClearValue(Control.BorderBrushProperty);
|
||||
}
|
||||
}
|
||||
|
||||
private static Border? GetComboBoxBorder(ComboBox cb) {
|
||||
var toggleButton = cb.Template.FindName("toggleButton", cb) as ToggleButton;
|
||||
return toggleButton?.Template.FindName("templateRoot", toggleButton) as Border;
|
||||
}
|
||||
|
||||
public static IEnumerable<T> FindVisualChilds<T>(DependencyObject depObj) where T : DependencyObject {
|
||||
|
@ -114,6 +114,8 @@ namespace WGneu.Windows {
|
||||
EntryDateInput.Text = DateTime.Now.ToString("dd.MM.yyyy");
|
||||
if (Context.Branches.Count() == 1)
|
||||
BranchInput.SelectedItem = Context.Branches.First();
|
||||
ActiveInput.IsChecked = true;
|
||||
ContactPostInput.IsChecked = true;
|
||||
FillOriginalValues();
|
||||
}
|
||||
|
||||
@ -420,8 +422,11 @@ namespace WGneu.Windows {
|
||||
tb.Text = " ";
|
||||
tb.Text = "";
|
||||
}
|
||||
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs))
|
||||
foreach (var cb in Utils.FindVisualChilds<ComboBox>(this, ExemptInputs)) {
|
||||
cb.SelectedItem = null;
|
||||
if (cb.ItemsSource != null)
|
||||
Utils.SetInputInvalid(cb);
|
||||
}
|
||||
foreach (var cb in Utils.FindVisualChilds<CheckBox>(this, ExemptInputs))
|
||||
cb.IsChecked = false;
|
||||
foreach (var rb in Utils.FindVisualChilds<RadioButton>(this, ExemptInputs))
|
||||
@ -472,6 +477,11 @@ namespace WGneu.Windows {
|
||||
ortInput.ItemsSource = null;
|
||||
}
|
||||
ortInput.SelectedItem = null;
|
||||
if (ortInput.ItemsSource != null) {
|
||||
Utils.SetInputInvalid(ortInput);
|
||||
} else {
|
||||
Utils.ClearInputState(ortInput);
|
||||
}
|
||||
Valid[plzInput] = optional || (ortInput.ItemsSource != null);
|
||||
UpdateButtons();
|
||||
}
|
||||
@ -545,8 +555,9 @@ namespace WGneu.Windows {
|
||||
|
||||
private void ComboBox_SelectionChanged(object sender, RoutedEventArgs evt) {
|
||||
var input = (ComboBox)sender;
|
||||
if (InputHasChanged(input)) {
|
||||
// TODO not working
|
||||
if (input.ItemsSource != null && input.SelectedItem == null) {
|
||||
Utils.SetInputInvalid(input);
|
||||
} else if (InputHasChanged(input)) {
|
||||
Utils.SetInputChanged(input);
|
||||
} else {
|
||||
Utils.ClearInputState(input);
|
||||
|
Reference in New Issue
Block a user