Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MVVM模式为Xamarin表单中的ZXingScannerView添加自定义覆盖?_C#_Xaml_Xamarin_Xamarin.forms_Zxing - Fatal编程技术网

C# 如何使用MVVM模式为Xamarin表单中的ZXingScannerView添加自定义覆盖?

C# 如何使用MVVM模式为Xamarin表单中的ZXingScannerView添加自定义覆盖?,c#,xaml,xamarin,xamarin.forms,zxing,C#,Xaml,Xamarin,Xamarin.forms,Zxing,我花了一些时间在其他地方获取示例,以便获得一个Zxing扫描仪视图来处理ViewModel。我能够启动扫描事件,但视觉效果都消失了。我现在正试图在扫描仪视图周围添加一个自定义覆盖,以再次添加视觉效果,但它们看起来有点疯狂 我想要的外观是让整个屏幕显示相机视图,并在顶部“覆盖”覆盖视觉效果 以下类别: ScanningView.xaml ScanningViewModel.cs 使用RMAGo.Features.Common; 使用RMAGo.Features.Navigation; 使用RM

我花了一些时间在其他地方获取示例,以便获得一个Zxing扫描仪视图来处理ViewModel。我能够启动扫描事件,但视觉效果都消失了。我现在正试图在扫描仪视图周围添加一个自定义覆盖,以再次添加视觉效果,但它们看起来有点疯狂

我想要的外观是让整个屏幕显示相机视图,并在顶部“覆盖”覆盖视觉效果

以下类别:

ScanningView.xaml

ScanningViewModel.cs
使用RMAGo.Features.Common;
使用RMAGo.Features.Navigation;
使用RMAGo.Features.Settings;
使用RMAGo.Framework;
使用制度;
使用System.Collections.Generic;
使用系统组件模型;
使用系统文本;
使用System.Threading.Tasks;
使用Xamarin.Forms;
使用ZXing;
使用ZXing.Mobile;
使用ZXing.Net.Mobile.Forms;
命名空间RMAGo.Features.Scanning
{
公共类ScanningViewModel:ViewModelBase
{
专用只读iRMAPIService(rmaApiService);;
私有只读设置服务(U设置服务);
专用只读IDialogService(对话服务);
私有只读INavigationService(导航服务);
私有字符串条形码=string.Empty;
公共字符串条形码
{
得到
{
返回条码;
}
设置
{
条形码=值;
}
}       
private bool _isAnalyzing=真;
公共布尔分析
{
获取{return\u isAnalyzing;}
设置
{
如果(!等于(_正在分析,值))
{
_分析=价值;
}
}
}        
private bool_isScanning=true;
公共图书馆
{
获取{return\u isScanning;}
设置
{
如果(!等于(_is扫描,值))
{
_IsScaning=值;
}
}
}       
公共命令扫描命令
{
得到
{
返回新命令(()=>
{
Isanalysising=假;
IsScanning=false;
Device.beginInvokeMainThread(异步()=>
{
条形码=结果文本;
wait_dialogService.ShowAlertAsync(“扫描项目”,结果,文本,“确定”);
});
分析=正确;
IsScaning=真;
});               
}
}
公共结果结果{get;set;}
公共扫描视图模型(iRMAPAPIService RMAPIService、iSetting服务设置服务、IDialogService对话框服务、INavigationService导航服务)
{
_RMAPIservice=RMAPIservice;
_设置服务=设置服务;
_dialogService=dialogService;
_导航服务=导航服务;
PropertyChanged+=扫描视图模型\u PropertyChanged;
}
private void ScanningViewModel_PropertyChanged(对象发送方,PropertyChangedEventArgs e)
{           
}
}
}
结果截图
更新:我找到了解决方案。我在github上看到了这个示例文件,它将覆盖和扫描视图作为子对象直接添加到网格中:

有一次,我发现我基本上遵循了相同的方法,但使用的是xaml。(注意:我被卡住了一段时间,因为我列出了覆盖图,然后列出了扫描视图。顺序很重要,因为我猜每一个都是放在另一个上面的,所以覆盖图必须排在第二位,最后一个写在上面)

ScanningView.xaml

使用ScannerView,我们可以将“可能的模板”设置为扫描吗?
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="RMAGo.Features.Scanning.ScanningView"             
             xmlns:viewModelBase="clr-namespace:RMAGo.Framework;assembly=RMAGo" 
             viewModelBase:ViewModelLocator.AutoWireViewModel="true"
             xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
             Title="Scanning">   
   


    <Grid VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <zxing:ZXingScannerView                                      
                    IsScanning="{Binding IsScanning}" 
                    IsAnalyzing="{Binding IsAnalyzing}"
                    Result="{Binding Result, Mode=TwoWay}" 
                    ScanResultCommand="{Binding ScanCommand}" />    
         <zxing:ZXingDefaultOverlay               
                x:Name="scannerOverlay"                                                       
                BottomText="Place the red line over the barcode you'd like to scan." />            

    </Grid>   
             
</ContentPage>