2015-05-14 2 views
0

Я знаю, что если я использовал контроллер представления я могу использовать это:Как получить управление навигацией с помощью кнопки?

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.

ответ

0

Код для создания сканера должен находиться внутри контроллера/активности/страницы просмотра. Вы можете использовать пользовательскую кнопку и добавить код, который вам нужен, для обработчика события Clicked.

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 
Смежные вопросы