私はextendedentryとカスタムレンダラークラスを持っています
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
作品。
私は何を間違えたのですか?
編集
ExportRenderer
Xamarin.Formsの行はレンダラー クラスにあります。
[assembly: ExportRenderer(typeof(ExtendedEntry), typeof(ExtendedEntryRenderer))]