这是我的示例代码。
Entry entry= new Entry();
entry.BackgroundColor=Color.Teal;
entry.Enabled=false;
您可以看到条目背景颜色在禁用状态下没有改变。这是实际行为吗?在那种情况下,如何区分进入控制的启用和禁用状态。
这是我的示例代码。
Entry entry= new Entry();
entry.BackgroundColor=Color.Teal;
entry.Enabled=false;
您可以看到条目背景颜色在禁用状态下没有改变。这是实际行为吗?在那种情况下,如何区分进入控制的启用和禁用状态。
这是默认行为。除非控件具有实际属性,否则开箱即用不支持为禁用项目设置样式。但是您可以通过几种不同的方式轻松实现类似的功能。一种方法是创建一个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>