سؤال

أستسلم، كيف ألقي ذلك؟

class AmountIsTooHighConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        //int amount = (int)value;
        //int amount = (int)(string)value;
        //int amount = (int)(value.ToString);
        //int amount = Int32.Parse(value);
        //int amount = (int)Convert.ChangeType(value, typeof(int));
        //int amount = Convert.ToInt32(value);
        if (amount >= 35)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
}
هل كانت مفيدة؟

المحلول

كلاهما Convert.ToInt32 أو Int32.Parse يجب أن تعمل ... إذا لم يفعلوا، فالقيمة بالتأكيد ليست كثيرة؛)
حاول وضع نقطة توقف في محولك لمشاهدة القيمة، فقد تظهر لك سبب عدم العمل

نصائح أخرى

إذا كانت القيمة هي في الواقع كائن سلسلة (مع محتوى يمثل قيمة عدد صحيح)، فإن هذا يعطي الأقل النفقات العامة:

int amount = Int32.Parse((string)value);

ال Convert.ToInt32 يجب أن تكون قادرة على التعامل مع معظم أي شيء ممكن للتحويل إلى int, ، مثل سلسلة تحتوي على أرقام أو أي نوع رقمي ضمن النطاق الذي int يمكن التعامل مع.

ضع نقطة توقف في قوس فتح من طريقة تحويلك. بدء تشغيل التطبيق الخاص بك في وضع التصحيح. عندما تضغط نقطة التوقف على تحليل النوع الفعلي من القيمة. وبعد هل يلقي. إذا كانت القيمة هي سلسلة يلقيها إلى سلسلة ثم تحليل النتيجة للحصول على عدد صحيح. قم بتشغيل البرنامج مرة أخرى. يجب أن تعمل هذه المرة.

إذا كانت القيمة كائن، ToString() من الأفضل تحويلها إلى سلسلة قبل التحليل Int int amount = Int32.Parse(value.ToString());

الجواب بسيط في الأساس. بسبب ال IValueConverter لديه نفس الطريقة تسمى Convert لا يمكنك ببساطة لنا Convert الاعتراض تماما مثل هذا.

ولكن إذا قمت بإضافة البادئة الصحيحة التي يعمل فيها:

int amount = System.Convert.ToInt32(value);
int amount;
if(int32.TryParse((string)value,out amount)
{
   if(amount>=35)
    {
        return true;
    }
    else
    {
      return false;
    }
}
else
{
  return false;
}

هذه هي الطريقة الأكثر أمانا، وأعتقد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top