BackgroundColor записи в Xamarin.Forms iOS не изменяется, когда он отключен

Это мой пример кода.

Entry entry= new Entry();
entry.BackgroundColor=Color.Teal;
entry.Enabled=false;

Вы можете видеть, что цвет фона записи не изменяется в отключенном состоянии. Это фактическое поведение? В этом случае можно различать состояние Enable и Disable управления входом.

DisabledEntryImage


person Pavendhan Kumar    schedule 29.05.2017    source источник


Ответы (1)


Это поведение по умолчанию. Стилизация отключенных элементов не поддерживается по умолчанию, если элемент управления не имеет для него фактического свойства. но вы можете легко реализовать что-то подобное несколькими различными способами. Можно было бы создать пользовательский Entry с привязываемым свойством, называемым чем-то вроде DisabledStyle. Затем вы можете установить собственный стиль для отключенных Entry полей.

Вариант 1. Пользовательская запись

public class ExtendedEntry : Entry
{
  private Style normalStyle;

  public Style DisabledStyle
  {
    get { return (Style)GetValue(DisabledStyleProperty); }
    set { SetValue(DisabledStyleProperty, value); }
  }

  public static readonly BindableProperty DisabledStyleProperty = BindableProperty.Create(nameof(DisabledStyle), typeof(Style), typeof(ExtendedEntry), null, BindingMode.TwoWay, null, (obj, oldValue, newValue) => { });

  public ExtendedEntry()
  {
      normalStyle = this.Style;
      this.PropertyChanged += ExtendedEntry_PropertyChanged;
  }

  private void ExtendedEntry_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  {
    if (e.PropertyName == nameof(IsEnabled) && this.DisabledStyle != null)
    {
      if (this.IsEnabled)
        this.Style = normalStyle;
      else
        this.Style = DisabledStyle;
    }
  }
}

Вариант 2. Триггеры

Другой вариант - использовать триггер:

<Entry Placeholder="enter name">
    <Entry.Triggers>
        <Trigger TargetType="Entry"
             Property="IsEnabled" Value="True">
            <Setter Property="BackgroundColor" Value="Yellow" />
        </Trigger>
    </Entry.Triggers>
</Entry>
person Steven Thewissen    schedule 29.05.2017