我有扩展入口和自定义渲染器类
public class ExtendedEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Click += (sender, evt) =>
{
var nativeEditText = (global::Android.Widget.EditText)Control;
nativeEditText.SetSelectAllOnFocus(true);
new Handler().PostDelayed(delegate
{
Control.InputType = 0;
try
{
InputMethodManager inputMethodManager = Control.Context.GetSystemService(Android.Content.Context.InputMethodService) as InputMethodManager;
if (inputMethodManager != null)
{
inputMethodManager.HideSoftInputFromWindow(Control.WindowToken, HideSoftInputFlags.None);
}
}
catch (Exception Ex)
{
}
}, 300L);
};
// Hide soft input keyboard
Control.FocusChange += (sender, evt) =>
{
// Select all on entry focus
var nativeEditText = (global::Android.Widget.EditText)Control;
nativeEditText.SetSelectAllOnFocus(true);
new Handler().PostDelayed(delegate
{
Control.InputType = 0;
try
{
InputMethodManager inputMethodManager = Control.Context.GetSystemService(Android.Content.Context.InputMethodService) as InputMethodManager;
if (inputMethodManager != null)
{
inputMethodManager.HideSoftInputFromWindow(Control.WindowToken, HideSoftInputFlags.None);
}
}
catch (Exception Ex)
{
}
}, 300L);
};
}
}
}
我的自定义条目:
public class ExtendedEntry : Entry
{
}
我的 XAML 文件是这样的:
<local:ExtendedEntry x:Name="BarcodeEntry" Text="{Binding Barcode}" Margin="0,0,0,0" HorizontalOptions="FillAndExpand" VerticalOptions="Start">
<Entry.Triggers>
<Trigger TargetType="Entry" Property="IsFocused" Value="True">
<Setter Property="BackgroundColor" Value="Yellow" />
<Setter Property="TextColor" Value="Black" />
</Trigger>
</Entry.Triggers>
</local:ExtendedEntry>
Trigger
不起作用。
但是当我像这样更改为默认进入控件时:
<Entry x:Name="BarcodeEntry" Text="{Binding Barcode}" Margin="0,0,0,0"HorizontalOptions="FillAndExpand" VerticalOptions="Start">
<Entry.Triggers>
<Trigger TargetType="Entry" Property="IsFocused" Value="True">
<Setter Property="BackgroundColor" Value="Yellow" />
<Setter Property="TextColor" Value="Black" />
</Trigger>
</Entry.Triggers>
</Entry>
Trigger
作品。
我做错了什么?
编辑
Xamarin.Forms 中的ExportRenderer
行在我的渲染器类中。
[assembly: ExportRenderer(typeof(ExtendedEntry), typeof(ExtendedEntryRenderer))]