Xamarin形式:如何调用和处理自定义渲染器?

时间:2018-06-26 03:58:16

标签: c# xamarin xamarin.forms custom-renderer

我正在为camera使用自定义渲染器。我在同一页面中有两个视图,一次使用一个相机。因此,在一个按钮上单击可以打开一个视图并使用相机,在另一个按钮上单击可以释放相机,以便同一页面中的其他视图可以使用它。

当我添加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 个答案:

没有答案