2017-03-23 44 views
0

変換のためのデフォルトのテキストボックス検証を無効にして、自分で処理できるようにします。私は検証ルールを見てきましたが、元の検証を無効にすることはできません。今までXaml:無効にして '値を変換できませんでした' WPFのテキストボックスの検証エラー

<Grid> 
    <TextBox Text="{Binding Path=Option.Value, NotifyOnSourceUpdated=True}" > 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="SourceUpdated"> 
       <i:InvokeCommandAction Command="{Binding OptionValueChanged}"></i:InvokeCommandAction> 
     </i:EventTrigger> 
     </i:Interaction.Triggers> 
    </TextBox> 
</Grid> 

Atm、文字列を入力すると、フィールドが整数であるため '値{val}は変換できません'と表示されます。自分自身で値を扱うためにこれをどのように無効にすることができますか?

+1

文字列とintの間の変換を自分で処理したい場合は、コンバータを使用できます。 – mm8

答えて

1

プロパティintのプロパティは、intの値にのみ設定できます。エラーメッセージをカスタマイズすることはできますが、intプロパティをint以外に設定することはできません。あなたはstringint自分自身との間の実際の変換を処理したい場合は

How do I handle DependencyProperty overflow situations?

エラーメッセージをカスタマイズするカスタムValidationRuleを使用する方法の例については、ここでの回答をご参照ください

<Window.Resources> 
    <local:YourConverter x:Key="conv" /> 
</Window.Resources> 
... 
<TextBox Text="{Binding Path=Option.Value, NotifyOnSourceUpdated=True, Coverter={StaticResource conv}}"/> 

public class YourConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     //convert the int to a string: 
     return value.ToString(); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     //convert the string back to an int here 
     return int.Parse(value.ToString()); 
    } 
} 
012:あなたは、コンバータを使用することができます
+0

ありがとう、私はそれを文字列に変換したくないですが、ユーザがintではない値を指定していた場合、デフォルトで0となり、メッセージを自分で処理できるようになります – matt

+0

カスタム検証ルールを使用しますそれからリンクごとに。 – mm8

+0

私はちょうどそれを今試してみるでしょう – matt

関連する問題