I've been trying to create a custom renderer as described here. I'm getting the following error and have had no luck in determining why:
System.ArgumentException: Object type iOSForms.VideoLayoutManager cannot be converted to target type: Xamarin.Forms.View
This seems strange because my iOS project is providing an implementation that is a Xamarin.Forms.View
(iOSForms
is the PCL's namespace and iOS
is the iOS project's namespace):
[assembly: ExportRenderer(typeof(iOSForms.VideoLayoutManager), typeof(iOS.iOSVideoLayoutManager))]
namespace iOS
{
public class iOSVideoLayoutManager : View
{
}
}
I've also tried extending other classes, like the EntryRenderer
that the examples use.
And then iOSForms.VideoLayoutManager
(which is in a PCL) is defined as simply:
namespace iOSForms
{
public class VideoLayoutManager {}
}
Exactly as the documentation demonstrates. I even tried making it extend View
, but that gets the error "System.InvalidCastException: Cannot cast from source type to destination type."
My XAML file is simply:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:iOSForms;assembly=iOSForms"
x:Class="iOSForms.VideoPage">
<StackLayout>
<local:VideoLayoutManager />
</StackLayout>
</ContentPage>
The error message seems to imply that the iOS custom renderer isn't being used and that Xamarin.Forms is trying to use the VideoLayoutManager
, which obviously is not a View
. So what am I doing wrong?