2017-04-20 4 views
0

Xamarin Forms에 텍스트 입력에서 입력 문자열을 가져 와서 QR 코드로 변환하는 QR 코드 앱을 작성하고 있습니다.과 비슷한 텍스트 입력에서 입력을 삭제하거나 입력하는 동안 QR 코드가 동적으로 변경되기를 바랍니다.Xamarin - TextChanged() 이벤트에서 QR 코드 교체

나는 이것이 TextChangeEventArgs을 사용하여 가능하다고 믿지만, 어떻게 작동하는지 확신 할 수 없습니다. 내가 여기서 무엇을 놓치고 있니? My Entry이 변경 될 때

내 텍스트 입력 여기

var myEntry = new Entry 
      { 
       Text = "Hello SO"      
      }; 

는 MyEntryChanged 이벤트가 발생하기 때문에

void MyEntryChanged(Entry myEntry, TextChangedEventArgs e) 
     { 
      barcode = new ZXingBarcodeImageView 
      { 
       HorizontalOptions = LayoutOptions.FillAndExpand, 
       VerticalOptions = LayoutOptions.FillAndExpand, 
       AutomationId = "zxingBarcodeImageView", 
      }; 
      barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE; 
      barcode.BarcodeOptions.Width = 300; 
      barcode.BarcodeOptions.Height = 300; 
      barcode.BarcodeOptions.Margin = 10; 
      barcode.BarcodeValue = myEntry.Text; 

      Content = barcode; 
     } 
+0

당신은 Device.BeginInvokeOnMainThread을 사용해야 할 수도 있습니다 – Jason

답변

0

(이 아직 아무것도에 의해 호출되지 않는) 새로운 바코드를 생성하는 제 기능입니다 귀하의 UI가 다른 스레드, 요소 콘텐츠가 해당 스레드에 존재하지 않습니다.

당신은이 같은 코드를 사용한다 : UI를 업데이트 할 때

void MyEntryChanged(Entry myEntry, TextChangedEventArgs e) 
    { 
     Device.BeginInvokeOnMainThread(() => 
     { 
      barcode = new ZXingBarcodeImageView 
      { 
       HorizontalOptions = LayoutOptions.FillAndExpand, 
       VerticalOptions = LayoutOptions.FillAndExpand, 
       AutomationId = "zxingBarcodeImageView", 
      }; 
      barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE; 
      barcode.BarcodeOptions.Width = 300; 
      barcode.BarcodeOptions.Height = 300; 
      barcode.BarcodeOptions.Margin = 10; 
      barcode.BarcodeValue = myEntry.Text; 

      Content = barcode; 
     }); 

    }