[英]Xamarin.Forms DatePickerCustomRenderer doesn't recognize the IOnDateSetListener
我試圖將 TimePicker 自定義渲染器調整為 DatePicker。 長話短說它沒有按預期工作,它說關鍵字 this 不能從 Dialog 轉換為 OnDateSetListener,所以我嘗試添加一個顯式轉換:(DatePickerDialog.IOnDateSetListener)this。 但我也無法讓它運行。
TimePicker 運行良好,我從這里得到了它: 鏈接
[assembly: ExportRenderer(typeof(Xamarin.Forms.DatePicker), typeof(DatePickerDialogCustomRenderer))]
namespace Arbeitszeitrechner_Forms.Droid
{
class DatePickerDialogCustomRenderer : DatePickerRenderer
{
private readonly Context _context;
public DatePickerDialogCustomRenderer(Context context) : base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.DatePicker> e)
{
base.OnElementChanged(e);
}
DatePickerDialog dialog;
protected override DatePickerDialog CreateDatePickerDialog(int year, int month, int day)
{
dialog = new DatePickerDialog(_context, Resource.Style.DatePickerTheme, (DatePickerDialog.IOnDateSetListener)this, year, month, day);
return dialog;
}
}
}
根據您的描述和代碼,您想通過自定義渲染更改 DatePicker 對話框顏色,我認為您需要為DatePickerDialogCustomRenderer繼承MaterialDatePickerRenderer 。我使用以下代碼,它工作正常。
[assembly: ExportRenderer(typeof(Xamarin.Forms.DatePicker), typeof(DatePickerDialogCustomRenderer))]
namespace FormsSample.Droid
{
class DatePickerDialogCustomRenderer : MaterialDatePickerRenderer
{
private readonly Context _context;
public DatePickerDialogCustomRenderer(Context context) : base(context)
{
_context = context;
}
protected override DatePickerDialog CreateDatePickerDialog(int year, int month, int day)
{
Xamarin.Forms.DatePicker view = Element;
var dialog = new DatePickerDialog(Context, Resource.Style.TimePickerTheme, (o, e) =>
{
view.Date = e.Date;
((IElementController)view).SetValueFromRenderer(VisualElement.IsFocusedPropertyKey, false);
}, year, month, day);
return dialog;
}
}
}
截圖:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.