【问题标题】:OnElementPropertyChanged is not triggered in iOS custom renderer在 iOS 自定义渲染器中未触发 OnElementPropertyChanged
【发布时间】:2016-08-23 19:45:04
【问题描述】:

在 iOS 自定义渲染器中不会触发 OnElementPropertyChanged。

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

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);
    }
}

}

谁能告诉我我做错了什么?

【问题讨论】:

  • 您是否将此 CustomControl 添加到您的 XAML 中?使用本地命名空间。

标签: xamarin xamarin.ios xamarin.forms


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2015-03-29
    • 2016-10-24
    • 1970-01-01
    相关资源
    最近更新 更多