using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using CurrencyTextBoxControl; using Gestor.Common.Helpers; using Gestor.Common.Validation; using Gestor.Model.Helper; namespace Gestor.Application.Helpers; public static class BindingHelper { public static void DeleteValidationRule(object control) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) switch (control.GetType().Name) { case "TextBox": { Binding val = (Binding)(((object)BindingOperations.GetBinding((DependencyObject)(TextBox)control, TextBox.TextProperty)) ?? ((object)new Binding { Mode = (BindingMode)0, UpdateSourceTrigger = (UpdateSourceTrigger)1 })); val.ValidationRules.Clear(); ((FrameworkElement)(TextBox)control).SetBinding(TextBox.TextProperty, (BindingBase)(object)val); break; } case "DatePicker": { Binding val = (Binding)(((object)BindingOperations.GetBinding((DependencyObject)(DatePicker)control, DatePicker.SelectedDateProperty)) ?? ((object)new Binding { Mode = (BindingMode)0, UpdateSourceTrigger = (UpdateSourceTrigger)1 })); val.ValidationRules.Clear(); ((FrameworkElement)(DatePicker)control).SetBinding(DatePicker.SelectedDateProperty, (BindingBase)(object)val); break; } case "CurrencyTextBox": { Binding val = (Binding)(((object)BindingOperations.GetBinding((DependencyObject)(CurrencyTextBox)control, CurrencyTextBox.NumberProperty)) ?? ((object)new Binding { Mode = (BindingMode)0, UpdateSourceTrigger = (UpdateSourceTrigger)1 })); val.ValidationRules.Clear(); ((FrameworkElement)(CurrencyTextBox)control).SetBinding(CurrencyTextBox.NumberProperty, (BindingBase)(object)val); break; } } } public static string GetPath(object control) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown PropertyPath path; switch (control.GetType().Name) { default: return ""; case "TextBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(TextBox)control, TextBox.TextProperty); if (binding == null) { return ""; } path = binding.Path; break; } case "DatePicker": { Binding binding = BindingOperations.GetBinding((DependencyObject)(DatePicker)control, DatePicker.SelectedDateProperty); if (binding == null) { return ""; } path = binding.Path; break; } case "CurrencyTextBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(CurrencyTextBox)control, CurrencyTextBox.NumberProperty); if (binding == null) { return ""; } path = binding.Path; break; } case "ComboBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(ComboBox)control, Selector.SelectedItemProperty); if (binding == null) { return ""; } path = binding.Path; break; } case "AutoCompleteBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(AutoCompleteBox)control, AutoCompleteBox.SelectedItemProperty); if (binding == null) { return ""; } path = binding.Path; break; } } return path.Path; } public static void AddValidationRule(object control, ValidationRule rule = null) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Expected O, but got Unknown //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Expected O, but got Unknown //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Expected O, but got Unknown //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) Type type = control.GetType(); Binding val = new Binding { Mode = (BindingMode)0, UpdateSourceTrigger = (UpdateSourceTrigger)1 }; switch (type.Name) { case "TextBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(TextBox)control, TextBox.TextProperty); if (binding != null) { PropertyPath path = binding.Path; if (rule != null) { val.ValidationRules.Add(rule); } val.Path = new PropertyPath(path.Path, Array.Empty()); if (val.ValidationRules.Count > 0) { val.ValidationRules[0].ValidatesOnTargetUpdated = true; } ((FrameworkElement)(TextBox)control).SetBinding(TextBox.TextProperty, (BindingBase)(object)val); } break; } case "DatePicker": { Binding binding = BindingOperations.GetBinding((DependencyObject)(DatePicker)control, DatePicker.SelectedDateProperty); if (binding != null) { PropertyPath path = binding.Path; val.ValidationRules.Add((ValidationRule)(((object)rule) ?? ((object)new ValidacaoData()))); val.Path = new PropertyPath(path.Path, Array.Empty()); if (val.ValidationRules.Count > 0) { val.ValidationRules[0].ValidatesOnTargetUpdated = true; } ((FrameworkElement)(DatePicker)control).SetBinding(DatePicker.SelectedDateProperty, (BindingBase)(object)val); } break; } case "CurrencyTextBox": { Binding binding = BindingOperations.GetBinding((DependencyObject)(CurrencyTextBox)control, CurrencyTextBox.NumberProperty); if (binding != null) { PropertyPath path = binding.Path; val.ValidationRules.Add((ValidationRule)(((object)rule) ?? ((object)new ValidacaoDouble()))); val.Path = new PropertyPath(path.Path, Array.Empty()); if (val.ValidationRules.Count > 0) { val.ValidationRules[0].ValidatesOnTargetUpdated = true; } ((FrameworkElement)(CurrencyTextBox)control).SetBinding(CurrencyTextBox.NumberProperty, (BindingBase)(object)val); } break; } } } public static void AddBinding(object control, string path, ValidationRule rule = null) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_002b: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) Type type = control.GetType(); Binding val = new Binding { Mode = (BindingMode)0, UpdateSourceTrigger = (UpdateSourceTrigger)1, Path = new PropertyPath(path, Array.Empty()) }; if (rule != null) { val.ValidationRules.Add(rule); val.ValidationRules[0].ValidatesOnTargetUpdated = true; } switch (type.Name) { case "TextBox": ((FrameworkElement)(TextBox)control).SetBinding(TextBox.TextProperty, (BindingBase)(object)val); break; case "DatePicker": ((FrameworkElement)(DatePicker)control).SetBinding(DatePicker.SelectedDateProperty, (BindingBase)(object)val); break; case "CurrencyTextBox": ((FrameworkElement)(CurrencyTextBox)control).SetBinding(CurrencyTextBox.NumberProperty, (BindingBase)(object)val); break; } } public static List> BindingData(bool withSelect = true, bool enumDefault = true, string defaultValue = "", string defaultText = "", bool orderByLabel = false, bool showAll = false, bool orderbyAttr = false) { List> comboData = BeforeTreatment(defaultValue, defaultText); Type enumType = typeof(T); List> comboValues = Enum.GetNames(enumType).AsEnumerable().Where(delegate(string x) { if (showAll) { return true; } T obj = (T)Enum.Parse(enumType, x); bool? @default = EnumHelper.GetDefault(obj); bool hidden = EnumHelper.GetHidden(obj); return (!@default.HasValue || @default.Value == enumDefault) && !hidden; }) .Select(delegate(string x) { T val = (T)Enum.Parse(enumType, x); return new KeyValuePair(EnumHelper.Value(val), EnumHelper.GetDescription(val)); }) .ToList(); return AfterTreatment(withSelect, orderByLabel, comboData, comboValues, orderbyAttr); } private static List> BeforeTreatment(string defaultValue, string defaultText) { defaultText = ((defaultText == string.Empty) ? "Selecione" : defaultText); return new List> { new KeyValuePair(defaultValue, defaultText) }; } private static List> AfterTreatment(bool withSelect, bool orderByLabel, List> comboData, List> comboValues, bool orderbyAttr = false) { if (!withSelect) { comboData.RemoveAt(0); } comboData.AddRange(comboValues); if (orderbyAttr) { Type enumType = typeof(T); comboData = comboData.OrderBy((KeyValuePair s) => (s.Key == string.Empty) ? new int?(0) : EnumHelper.GetOrder((T)Enum.Parse(enumType, s.Key))).ToList(); return comboData; } if (!orderByLabel) { return comboData; } comboData = (from x in comboData orderby Math.Sign(ValidationHelper.ToFloat(x.Key)), Math.Abs(ValidationHelper.ToFloat(x.Key)) select x).ToList(); comboData = (from s in comboData orderby comboData.IndexOf(s) != 0, s.Value select s).ToList(); return comboData; } }