1

整数型ではない数量フィールドがあるデータグリッドがあります。ここで、ユーザーが正の整数のみを入力するように制限したいと思います。データグリッド キー イベントで入力を処理するソリューションは必要ありません。助言がありますか?

そして、これが私が使用しているコンバーターです

public class ValueConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        { return value; }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!OnlyPositiveIntergerAllowed(value.ToString()))
            {
                string s = Regex.Replace(value.ToString(), @"[^0-9]+", string.Empty);

                if(s=="")
                return 0;
                else
                    return s;

            }
           if (value is string && (string)value == "")
            {
                return 0;
            }

            return value;

        }
        private static bool OnlyPositiveIntergerAllowed(string text)
        {
            var regex = new Regex("[^0-9]+"); //regex that matches disallowed text
            return !regex.IsMatch(text);
        }
}

注: 正常に動作します (つまり、123dasd の場合。フォーカスが失われたときに変換されます 123) が、ユーザーが入力できるようにします (dasd.)。

4

2 に答える 2

0

あなたが求める解決策は検証と呼ばれます。

WPF 検証を検索すると、多くのリンクが提供されます

于 2012-11-17T10:31:26.280 に答える
0

この状況では、 Extended WPF ToolkitからDataGridTemplateColumnおよびを使用できます。IntegerUpDown

例:

            <DataGridTemplateColumn Header="Amount">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <toolkit:IntegerUpDown 
                                    Minimum="0"
                                    Value="{Binding Amount}"
                            />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

DecimalUpDownも使用できます。

于 2012-11-16T16:45:47.820 に答える