Xamarion iOS DatePickerRenderer

Xamarion iOS DatePickerRenderer,ios,xamarin,renderer,Ios,Xamarin,Renderer,我已经为我的Xamarin应用程序编写了两个针对Android和iOS的CustomDatePickerRenderer。对于Android,一切正常,对于iOS no.我在创建DatePicker时控制无效强制转换的异常 下面是代码(简化): iOS渲染器 class CustomDatePickerRenderer : DatePickerRenderer { protected override void OnElementChanged(ElementChangedEventA

我已经为我的
Xamarin
应用程序编写了两个针对Android和iOS的
CustomDatePickerRenderer
。对于Android,一切正常,对于iOS no.我在创建
DatePicker
时控制无效强制转换的异常

下面是代码(简化):

iOS渲染器

class CustomDatePickerRenderer : DatePickerRenderer
{

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

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

        if (Control == null)
        {
            return;
        }

    }

}
类CustomDatePickerRenderer:DatePickerRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
}
受保护的覆盖无效OneElementPropertyChanged(对象发送方,System.ComponentModel.PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(发送方,e);
if(Control==null)
{
返回;
}
}
}
例外情况

System.InvalidCastException: Specified cast is not valid.
  at (wrapper castclass) System.Object:__castclass_with_cache (object,intptr,intptr)
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load () [0x0001e] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000cc] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load () [0x0001e] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000cc] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (System.Object sender, Xamarin.Forms.ElementEventArgs e) [0x0000f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:113 
  at Xamarin.Forms.Element.OnChildAdded (Xamarin.Forms.Element child) [0x00029] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Element.cs:354 
  at Xamarin.Forms.VisualElement.OnChildAdded (Xamarin.Forms.Element child) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\VisualElement.cs:570 
  at Xamarin.Forms.Layout`1[T].OnChildAdded (Xamarin.Forms.Element child) [0x00000] in <051840eae40a4636884ee6bc6a0d140a>:0 
  at Xamarin.Forms.Layout.OnInternalAdded (Xamarin.Forms.View view) [0x0001d] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:406 
  at Xamarin.Forms.Layout.InternalChildrenOnCollectionChanged (System.Object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00089] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:396 
  at (wrapper delegate-invoke) <Module>:invoke_void_object_NotifyCollectionChangedEventArgs (object,System.Collections.Specialized.NotifyCollectionChangedEventArgs)
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00012] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedAction action, System.Object item, System.Int32 index) [0x00009] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].InsertItem (System.Int32 index, T item) [0x00024] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.Collection`1[T].Add (T item) [0x00023] in <15e850188d9f425bbeae90f0bbc51e17>:0 
  at Xamarin.Forms.ObservableWrapper`2[TTrack,TRestrict].Add (TRestrict item) [0x0004b] in <051840eae40a4636884ee6bc6a0d140a>:0 
  at Xamarin.Forms.RelativeLayout+RelativeElementCollection.Add (Xamarin.Forms.View view, Xamarin.Forms.Constraint xConstraint, Xamarin.Forms.Constraint yConstraint, Xamarin.Forms.Constraint widthConstraint, Xamarin.Forms.Constraint heightConstraint) [0x00012] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\RelativeLayout.cs:313 
  at ArgonApp.InserimentoAutoletturaPage+<selectPage>c__async3.MoveNext () [0x00241] in /Users/alessandro/Desktop/Argon Whitelabel/ArgonApp/ArgonApp/Views/InserimentoAutoletturaPage.xaml.cs:406 
System.InvalidCastException:指定的强制转换无效。
at(wrapper castclass)System.Object:__castclass_与_缓存(Object,intptr,intptr)
位于:0中的Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementTrenderer.SetElement(Xamarin.Forms.VisualElement元素)[0x00000
位于C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素)[0x0001b]中的Xamarin.Forms.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素):192
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.VisualElementPackager.onchildaded(Xamarin.Forms.VisualElement视图)[0x00009]中的C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.Load()[0x0001e]中的Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36
位于:0中的Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement(TElement元素)[0x000cc]
位于:0中的Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementTrenderer.SetElement(Xamarin.Forms.VisualElement元素)[0x00000
位于C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素)[0x0001b]中的Xamarin.Forms.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素):192
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.VisualElementPackager.onchildaded(Xamarin.Forms.VisualElement视图)[0x00009]中的C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.Load()[0x0001e]中的Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36
位于:0中的Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement(TElement元素)[0x000cc]
位于:0中的Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementTrenderer.SetElement(Xamarin.Forms.VisualElement元素)[0x00000
位于C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素)[0x0001b]中的Xamarin.Forms.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素):192
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.VisualElementPackager.onchildaded(Xamarin.Forms.VisualElement视图)[0x00009]中的C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS.VisualElementPackager.onchildaded(System.Object sender,Xamarin.Forms.ElementEventArgs e)[0x0000f]的C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.platforms.iOS\VisualElementPackager.cs:113中
位于C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Element.cs:354中的Xamarin.Forms.Element.onchildaded(Xamarin.Forms.Element子项)[0x00029]
位于C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\VisualElement.cs:570中的Xamarin.Forms.VisualElement.onchildeded(Xamarin.Forms.Element子项)[0x00000]
位于Xamarin.Forms.Layout`1[T].onchildaded(Xamarin.Forms.Element子元素)[0x00000]中:0
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:406中的Xamarin.Forms.Layout.OnInternalAdded(Xamarin.Forms.View视图)[0x0001d]中
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:396中的Xamarin.Forms.Layout.InternalChildrenOnCollectionChanged(System.Object sender,System.Collections.Specialized.NotifyCollectionChangedEventArgs e)[0x00089]处
at(包装委托调用):调用\u void\u object\u NotifyCollectionChangedEventArgs(对象,System.Collections.Specialized.NotifyCollectionChangedEventArgs)
位于System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)[0x00012]中,位于:0
在System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedAction,System.Object项,System.Int32索引)[0x00009]中:0
位于System.Collections.ObjectModel.ObservableCollection`1[T].InsertItem(System.Int32索引,T项)[0x00024]中:0
在System.Collections.ObjectModel.Collection`1[T]处,在0中添加(T项)[0x00023]
在Xamarin.Forms.ObservableWrapper`2[TTrack,TRestrict].中添加(TRestrict项)[0x0004b]到:0
在C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\RelativeLayout.cs:313中的Xamarin.Forms.RelativeLayout+RelativeElementCollection.Add(Xamarin.Forms.View视图,Xamarin.Forms.Constraint xConstraint,Xamarin.Forms.Constraint yConstraint,Xamarin.Forms.Constraint widthConstraint,Xamarin.Forms.Constraint heightConstraint)[00012]处
在/Users/alessandro/Desktop/Argon Whitelabel/ArgonApp/ArgonApp/ArgonApp/Views/InserimentoAutoletturaPage.xaml.cs:406中的ArgonApp.InserimentoAutoletturaPage+c_uAsync3.MoveNext()[0x00241]
你知道这个问题吗?
谢谢。

你提到过这个了吗?请参考特伦斯·伍德和约瑟夫·迈耶的ans。没几天我也需要同样的。我用这个链接让它工作。希望能有帮助!!确保已在DatePickerRenderer中添加程序集名称。同学们,谢谢你们@luckyShubhra…我希望它能起作用:)你们
System.InvalidCastException: Specified cast is not valid.
  at (wrapper castclass) System.Object:__castclass_with_cache (object,intptr,intptr)
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load () [0x0001e] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000cc] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.Load () [0x0001e] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:36 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].SetElement (TElement element) [0x000cc] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.VisualElementRenderer`1[TElement].Xamarin.Forms.Platform.iOS.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00000] in <4cf9e9e173a04ea3aa841c775e6a23d7>:0 
  at Xamarin.Forms.Platform.iOS.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x0001b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\Platform.cs:192 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (Xamarin.Forms.VisualElement view) [0x00009] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:63 
  at Xamarin.Forms.Platform.iOS.VisualElementPackager.OnChildAdded (System.Object sender, Xamarin.Forms.ElementEventArgs e) [0x0000f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.iOS\VisualElementPackager.cs:113 
  at Xamarin.Forms.Element.OnChildAdded (Xamarin.Forms.Element child) [0x00029] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Element.cs:354 
  at Xamarin.Forms.VisualElement.OnChildAdded (Xamarin.Forms.Element child) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\VisualElement.cs:570 
  at Xamarin.Forms.Layout`1[T].OnChildAdded (Xamarin.Forms.Element child) [0x00000] in <051840eae40a4636884ee6bc6a0d140a>:0 
  at Xamarin.Forms.Layout.OnInternalAdded (Xamarin.Forms.View view) [0x0001d] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:406 
  at Xamarin.Forms.Layout.InternalChildrenOnCollectionChanged (System.Object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00089] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Layout.cs:396 
  at (wrapper delegate-invoke) <Module>:invoke_void_object_NotifyCollectionChangedEventArgs (object,System.Collections.Specialized.NotifyCollectionChangedEventArgs)
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00012] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedAction action, System.Object item, System.Int32 index) [0x00009] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.ObservableCollection`1[T].InsertItem (System.Int32 index, T item) [0x00024] in <c3954baf21fc42d6b4b50ba067398247>:0 
  at System.Collections.ObjectModel.Collection`1[T].Add (T item) [0x00023] in <15e850188d9f425bbeae90f0bbc51e17>:0 
  at Xamarin.Forms.ObservableWrapper`2[TTrack,TRestrict].Add (TRestrict item) [0x0004b] in <051840eae40a4636884ee6bc6a0d140a>:0 
  at Xamarin.Forms.RelativeLayout+RelativeElementCollection.Add (Xamarin.Forms.View view, Xamarin.Forms.Constraint xConstraint, Xamarin.Forms.Constraint yConstraint, Xamarin.Forms.Constraint widthConstraint, Xamarin.Forms.Constraint heightConstraint) [0x00012] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\RelativeLayout.cs:313 
  at ArgonApp.InserimentoAutoletturaPage+<selectPage>c__async3.MoveNext () [0x00241] in /Users/alessandro/Desktop/Argon Whitelabel/ArgonApp/ArgonApp/Views/InserimentoAutoletturaPage.xaml.cs:406