Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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# 如何从按钮获取导航控制?_C#_Xamarin_Xamarin.ios - Fatal编程技术网

C# 如何从按钮获取导航控制?

C# 如何从按钮获取导航控制?,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我知道如果我使用视图控制器,我可以使用: var scanner = new MobileBarcodeScanner(this.NavigationController); 我如何知道我在需要使用的按钮内部使用的导航 public class BarReaderButtonRenderer : ButtonRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Button>

我知道如果我使用视图控制器,我可以使用:

var scanner = new MobileBarcodeScanner(this.NavigationController);
我如何知道我在需要使用的按钮内部使用的导航

public class BarReaderButtonRenderer : ButtonRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        // I tried this but don't worked
        var scanner = new MobileBarcodeScanner(this.NavigationController);

        // I tried this but do
        var scanner = new MobileBarcodeScanner(this);

        Element.Clicked += async(s_, e_) => {
            // Setup our button
            // Tell our scanner to use the default overlay
            scanner.UseCustomOverlay = false;

            //We can customize the top and bottom text of the default overlay
            scanner.TopText = "Hold camera up to barcode to scan";
            scanner.BottomText = "Barcode will automatically scan";

            //Start scanning
            var result = await scanner.Scan ();

            HandleScanResult(result);
        };
    }
}
我不能在按钮渲染中使用此代码。还是以前有人这样做过


该项目是iOS和Android的共享应用程序。

用于创建扫描仪的代码应保留在视图控制器/活动/页面中。您仍然可以使用自定义按钮,并将所需的代码添加到单击的事件处理程序中

var myCustomButton = new BarReaderButton();

myCustomButton.Clicked += async(s, e) => {
        var scanner = new MobileBarcodeScanner();
        scanner.UseCustomOverlay = false;

        //Start scanning
        var result = await scanner.Scan ();

       //Do something with the result
    };
如果这是Xamarin.Forms,您还必须在页面代码中使用特定于平台的代码,因为条形码阅读器需要Android上的上下文:

#if __IOS__
var scanner = new MobileBarcodeScanner();
#elif __ANDROID__
var scanner = new MobileBarcodeScanner(Forms.Context);
#endif