Xamarin формы: как вызвать и утилизировать пользовательский рендерер?
Я использую пользовательский рендер для камеры. У меня есть два просмотра на одной странице, которая использует камеру по одному. Таким образом, при нажатии кнопки открывается одно представление и используется камера, а при нажатии другой кнопки освобождается камера, так что другое представление на той же странице может использовать его.
Моя камера работает хорошо, когда я добавляю в XAML, я располагаю и отпускаю камеру, чтобы другой вид мог использовать ее. Это прекрасно работает.
Моя главная проблема заключается в том, что когда я пытаюсь воссоздать новый объект этого пользовательского средства визуализации, в коде, который он не создает.
XAML
<?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:i18n="using:ABC.i18n"
xmlns:barcodescanner="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
xmlns:customcontrol="clr-namespace:Camera.CustomControls;assembly=Camera.CustomControls"
x:Class="e">
<ContentPage.Content>
<Grid StyleClass="Nav-bg">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="2.3*" />
</Grid.RowDefinitions>
<barcodescanner:ZXingScannerView x:Name="scannerView" BackgroundColor="Transparent" AutomationId = "zxingScannerView"
Grid.Row="0" Grid.ColumnSpan="2" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
<customcontrol:CameraPreview x:Name="CameraSection" IsEnabled="{Binding CanShowCamera, Mode=TwoWay}" Camera="Rear"
Grid.Row="1" Grid.ColumnSpan="2" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</Grid>
</ContentPage.Content>
</ContentPage>
Камера работает нормально, когда я создаю с использованием XAML. но позже я распоряжаюсь им и предоставляю камере доступ к другому виду, который также работает нормально, затем я пытаюсь воссоздать более старый вид, выполнив это:
CameraSection.IsVisible = false;
CameraSection = null;
var cam = new CameraPreview(){ IsEnabled = (BindingContext as ViewModel).CanShowCamera, Camera = CameraOptions.Rear };
cam.SetValue(Grid.RowProperty, 1);
Но это не правильно воссоздать его. Камера не появляется. Я неправильно инициализирую или я должен сделать это по-другому?