iOS自定义渲染器中未触发OnElementPropertyChanged

时间:2016-08-22 09:58:15

标签: xamarin xamarin.ios xamarin.forms

iOS自定义渲染器中未触发OnElementPropertyChanged。

我创建了一个类库。在我的Customer Renderer类中,我重写了一个OnElementPropertyChanged,每当我的View属性发生变化时都应该调用它。

XamarinForms:

public class CustomControl : View
{
    public int PageNumber
    {
        get { return (int)GetValue(PageNumberProperty); }
        set { SetValue(PageNumberProperty, value); }
    }

    public static readonly BindableProperty PageNumberProperty =
        BindableProperty.Create<CustomControl, int>(p => p.PageNumber, 0, BindingMode.Default, null, null);


}

CustomRenderer类iOS:

 [assembly: ExportRenderer(typeof(CustomControl), typeof(CustomRenderer))]

 namespace XForms.iOS
{    
internal class CustomRenderer : ViewRenderer<CustomControl, UIScrollView>
{

    protected override void OnElementChanged(ElementChangedEventArgs<CustomControl> e)
    {
        base.OnElementChanged(e);


    }
    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);
    }
}

}

谁能说出我做错了什么?

1 个答案:

答案 0 :(得分:1)

请通过在其中添加断点来仔细检查它是否真的使用了自定义渲染器。

接下来确保在创建UI元素后更改正确的(PageNumber。在创建过程中,不会发送属性更改通知。 Xamarin forums中描述了类似的情况。