2011-11-10 5 views
1

私は整数updown wpfツールキットコントロールを持っています。私は矢印キーを使って値を変更することができ、それを明示的に入力することができます。しかし、値を変更した後、フォーカスを離すと値はゼロになります。wpfツールキット整数updownはlostfocusの値を保持しません

ご協力いただければ幸いです。ありがとう!

<wpftlkit:IntegerUpDown Grid.Column="1" Margin="6" VerticalAlignment="Center" Increment="1" Maximum="7" 
         Value="{Binding ValueH, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"        Style="{StaticResource StyleErrorTemplate}" 
         IsEnabled="{Binding IsEnabled}" Visibility="{Binding Visibility}" /> 
+0

あなたはDataContextのためのコードが表示されるはずです - 「ValueH」のデータ検証エラーがある場合に、特に、「ValueH」プロパティ... –

答えて

0

私は問題がバインディングの問題であると考えます。 (UpdateSourceTriggerのために)フォーカスを失うまで、実際の値は更新されません。その時点で値をゼロに戻す強制的なプロパティへのバインドまたはバインドがこの動作をもたらします。

+0

はそれが起こるだろう。 (私はValidation.HasErrorが真であることを意味する)? – Relativity

+0

@Relativity Xamlで何も表示していないので、デフォルト動作です(赤い枠線)。私は読むことをお勧めします:http://blogs.msdn.com/b/bethmassi/archive/2008/06/27/displaying-data-validation-messages-in-wpf.aspx –

0

これはToolkitが動作する方法です。ユーザーがMin-Max境界外の値を入力したときに値を最大値または最小値に変更するには、WPF Toolkitソース(http://wpftoolkit.codeplex.com/SourceControl/changeset/view/98195)をダウンロードし、CommonNumericUpdown.csファイルをフォルダXceed.Wpf.Toolkit/NumericUpDown/NumericUpDown以下のようになります。 例外がスローされる前の行が追加されていることに注意してください。

private void ValidateDefaultMinMax(T? value) 
{ 
    // DefaultValue is always accepted. 
    if(object.Equals(value, DefaultValue)) 
    return; 

    if (IsLowerThan(value, Minimum)) 
    { 
     Value = Minimum; 
     throw new ArgumentOutOfRangeException("Minimum", String.Format("Value must be greater than MinValue of {0}", Minimum)); 
    } 
    else if (IsGreaterThan(value, Maximum)) 
    { 
     Value = Maximum; 
     throw new ArgumentOutOfRangeException("Maximum", String.Format("Value must be less than MaxValue of {0}", Maximum)); 
    } 
} 
関連する問題