Xamarin.Forms 中无法识别 WinPhone 的自定义选取器渲染器绘制事件
Custom picker renderer draw event not recognized in Xamarin.Forms for WinPhone
我正在尝试自定义 Xamarin.Forms 选择器控件。在 android 和 ios 中,我正在覆盖 Draw 事件并自己绘制控件。但是在 WinPhone 8.1 项目中,我无法覆盖 Draw 事件,因为它无法被识别。下面是我在 android 和 ios 中使用的代码,以及显示绘制事件不存在的 WinPhone 项目的屏幕截图。
Android
using Android.Graphics;
using Namespace.CustomControls;
using Namespace.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRendererAttribute(typeof(BindablePicker), typeof(BindablePickerRenderer))]
namespace Namespace.Droid.Renderers
{
public class BindablePickerRenderer : PickerRenderer
{
public BindablePickerRenderer()
{
this.SetWillNotDraw(false);
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
this.Element.PropertyChanged += (s_, e_) => Invalidate();
}
public override void Draw(Canvas canvas)
{
BindablePicker bp = (BindablePicker)this.Element;
// Code to draw my control
}
}
}
IOS
using System;
using System.Collections.Generic;
using System.Text;
using CoreGraphics;
using Xamarin.Forms.Platform.iOS;
using Namespace.CustomControls;
using UIKit;
using Xamarin.Forms;
using Namespace.iOS.Renderers;
[assembly: ExportRendererAttribute(typeof(BindablePicker), typeof(BindablePickerRenderer))]
namespace Namespace.iOS.Renderers
{
public class BindablePickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
this.Element.PropertyChanged += (s_, e_) => SetNeedsDisplay();
}
public override void Draw(CGRect rect)
{
BindablePicker bp = (BindablePicker)this.Element;
// Code to draw my control
}
}
}
赢Phone
如果有人知道我如何在 Windows Phone 8.1 平台上进入此控件的绘制事件,我将不胜感激。
提前致谢。
我正在尝试自定义 Xamarin.Forms 选择器控件。在 android 和 ios 中,我正在覆盖 Draw 事件并自己绘制控件。但是在 WinPhone 8.1 项目中,我无法覆盖 Draw 事件,因为它无法被识别。下面是我在 android 和 ios 中使用的代码,以及显示绘制事件不存在的 WinPhone 项目的屏幕截图。
Android
using Android.Graphics;
using Namespace.CustomControls;
using Namespace.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRendererAttribute(typeof(BindablePicker), typeof(BindablePickerRenderer))]
namespace Namespace.Droid.Renderers
{
public class BindablePickerRenderer : PickerRenderer
{
public BindablePickerRenderer()
{
this.SetWillNotDraw(false);
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
this.Element.PropertyChanged += (s_, e_) => Invalidate();
}
public override void Draw(Canvas canvas)
{
BindablePicker bp = (BindablePicker)this.Element;
// Code to draw my control
}
}
}
IOS
using System;
using System.Collections.Generic;
using System.Text;
using CoreGraphics;
using Xamarin.Forms.Platform.iOS;
using Namespace.CustomControls;
using UIKit;
using Xamarin.Forms;
using Namespace.iOS.Renderers;
[assembly: ExportRendererAttribute(typeof(BindablePicker), typeof(BindablePickerRenderer))]
namespace Namespace.iOS.Renderers
{
public class BindablePickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
this.Element.PropertyChanged += (s_, e_) => SetNeedsDisplay();
}
public override void Draw(CGRect rect)
{
BindablePicker bp = (BindablePicker)this.Element;
// Code to draw my control
}
}
}
赢Phone
如果有人知道我如何在 Windows Phone 8.1 平台上进入此控件的绘制事件,我将不胜感激。
提前致谢。