2017-09-07 5 views
0

UWPアプリケーションに浮動プロパティ(双方向)にバインドされた複数のテキストボックスがあります。私はコンパイルされたバインディングを使用します。現時点では、これらのテキストボックスには「コードビハインド」はありません。今、私は単純なミスタイプでアプリケーションがクラッシュするという問題を抱えています(たとえば、ユーザーが数字の代わりに文字を入力した場合)。私は生成されたコードを変更せずにこれらの例外をどのように処理できるのだろうかと思います。UWPアプリケーションで生成されたXAMLコードによってスローされたArgumentExceptionの処理方法

<TextBox Text="{x:Bind ViewModel.QtyGoodEntered, Mode=TwoWay}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="1" FontSize="36" x:Name="QtyGoodTextBox"/> 

文字をフロートに変換しようとするとアプリケーションがクラッシュします。

case 33: // Views\ProdFeedbackView.xaml line 191 
this.obj33 = (global::Windows.UI.Xaml.Controls.TextBox)target; 
         (this.obj33).LostFocus += (global::System.Object sender, global::Windows.UI.Xaml.RoutedEventArgs e) => 
{ 
    if (this.initialized) 
    { 
    // Update Two Way binding 
    this.dataRoot.ViewModel.QtyGoodEntered = (global::System.Double) global::Windows.UI.Xaml.Markup.XamlBindingHelper.ConvertValue(typeof(global::System.Double), this.obj33.Text); 
    } 

よろしく ニルス

+0

のthatsあなたは 'Converter'プロパティについて知っていますか? https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-bind-markup-extension#properties-that-you-can-set-with-xbind –

+0

例外をキャッチする代わりに、ユーザーが任意の文字を入力できるようにすべきではありません。 –

+0

@Florian MoserあなたはIValueConverterを書いてそこにあるものを処理すべきですか?いいですね。私は明日それを試み、あなたに知らせるでしょう。私の現在の解決策は、私のViewクラス内でApp.UnhandledExceptionを購読することですが、私はそれほど幸せではありません。 – nilsk

答えて

0

[OK]を私は次しまっオプション。私は、コンバータ・ソリューションに固執するが、私は考える時間不足にUnhandledException

をキャッチコンバータ(フロリアン・モーザーのおかげで)

  • TextBoxMask Property(マリアンDolinskyのおかげで)
  • を使用して

    • TextBoxMaskプロパティは試してみる価値があります。 UnhandledExceptionをキャッチすることは、私の意見では最悪の解決策です。 これは私のコンバータの外観です。例外の場合、コンテンツのデフォルトは0.0です。それはすべて私が必要と思った。

      public class StringToDoubleConverter : IValueConverter 
          { 
           public object Convert(object value, Type targetType, object parameter, string language) 
           { 
            try 
            { 
             return System.Convert.ToString((double)value); 
            } 
            catch 
            { 
             return ""; 
            } 
      
           } 
      
           public object ConvertBack(object value, Type targetType, object parameter, string language) 
           { 
            try 
            { 
            return System.Convert.ToDouble((string)value); 
            } 
            catch 
            { 
             return 0.0; 
            } 
           } 
          } 
      

      とXAMLの一部

      <TextBox Text="{x:Bind ViewModel.QtyGoodEntered, Mode=TwoWay, Converter={StaticResource StringToDoubleConverter}}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="1" FontSize="36" x:Name="QtyGoodTextBox"/> 
      
  • 関連する問題