/// <summary> /// Установка привязки цвета текста элемента к свойству объекта <see cref="SummaryProperty"/> /// </summary> /// <param name="element">Визуальный элемент</param> /// <param name="summaryProperty">Суммарное свойство</param> private void SetForegroundBinding(DependencyObject element, SummaryProperty summaryProperty) { BindingOperations.SetBinding(element, ForegroundProperty, new Binding { Source = summaryProperty, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Path = new PropertyPath("Foreground") }); }
/// <summary> /// Создание двусторонней привязки для использования в элементе <see cref="NumericBox"/> /// По какой-то причине при привязке к типу object не работает. В связи с этим делаю такой вот /// лайфхак - добавляю в класс <see cref="SmartEntityProperty"/> два свойства конкретного типа. /// Это нужно, чтобы решить эту специфическую проблему в данном проекте и не менять из-за этого /// библиотеку оформления /// </summary> /// <param name="summaryProperty">Суммарное свойство</param> /// <param name="isInteger">True - целое число. False - дробное число</param> private Binding CreateTwoWayBindingForPropertyForNumericValue( SummaryProperty summaryProperty, bool isInteger) { var binding = new Binding { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Source = summaryProperty, Path = isInteger ? new PropertyPath("IntValue") : new PropertyPath("DoubleValue") }; return(binding); }
/// <summary> /// Получение локализованного описания свойства /// </summary> /// <param name="summaryProperty">Суммарное свойство</param> private static string GetPropertyDescription(SummaryProperty summaryProperty) { try { var description = ModPlusAPI.Language.GetItem(summaryProperty.DescriptionLocalizationKey); if (!string.IsNullOrEmpty(description)) { return(description); } } catch { // ignore } return(string.Empty); }
/// <summary> /// Создание двусторонней привязки к суммарному свойству /// </summary> /// <param name="summaryProperty">Суммарное свойство</param> /// <param name="converter">Конвертер (при необходимости)</param> /// <returns>Объект типа <see cref="Binding"/></returns> private static Binding CreateTwoWayBindingForProperty( SummaryProperty summaryProperty, IValueConverter converter = null) { var binding = new Binding { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, Source = summaryProperty, Path = new PropertyPath("SummaryValue") }; if (converter != null) { binding.Converter = converter; } return(binding); }
/// <summary> /// Получение локализованного (отображаемого) имени свойства /// </summary> /// <param name="summaryProperty">Суммарное свойство</param> private static string GetPropertyDisplayName(SummaryProperty summaryProperty) { try { var displayName = ModPlusAPI.Language.GetItem(summaryProperty.DisplayNameLocalizationKey); if (!string.IsNullOrEmpty(displayName)) { if (!displayName.EndsWith(":")) { displayName = $"{displayName}:"; } return(displayName); } } catch { // ignore } return(string.Empty); }