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

Но это не правильно воссоздать его. Камера не появляется. Я неправильно инициализирую или я должен сделать это по-другому?

0 ответов

Другие вопросы по тегам