【问题标题】:XAML foreach() Error Object reference not set to an instance of an objectXAML foreach() 错误对象引用未设置为对象的实例
【发布时间】:2010-01-20 00:38:24
【问题描述】:

我在 Visual Studio 中出现了一个奇怪的 XAML 错误。我已将其隔离到导致它的下面的代码中。使用下面的转换器时 XAML 设计器出错,但应用程序运行良好而没有错误。我喜欢保持代码整洁并删除所有警告和错误,我需要做些什么来摆脱这个?

 [ValueConversion(typeof(double?), typeof(double?))]
public class SummaryConverter : IValueConverter
{
    #region IValueConverter Members
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        CollectionViewGroup group = value as CollectionViewGroup ;
        if (parameter.ToString() == "FieldName")
        {
            double suUnits = 0;
            foreach (var t in group.Items) //This Line here causes error on XAML

            {
                suUnits +=  t.FieldName.GetValueOrDefault();
            }
            return suUnits;
        }
return "";
}

【问题讨论】:

    标签: c# .net xaml object


    【解决方案1】:

    您应该为 group 添加一个 null 检查,因为如果正在“转换”的对象尚未绑定,则 group 可能为 null。这在设计器中经常发生。

    我只想把它改成:

    public class SummaryConverter : IValueConverter 
    { 
        #region IValueConverter Members 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            CollectionViewGroup group = value as CollectionViewGroup ; 
            if ((group != null) && (parameter.ToString() == "FieldName")) // Add null check here!
            { 
                double suUnits = 0; 
                foreach (var t in group.Items) //This Line here causes error on XAML 
                 { 
                    suUnits +=  t.FieldName.GetValueOrDefault(); 
                } 
                return suUnits; 
            } 
        return ""; 
    } 
    

    【讨论】:

    • 这是使用 as 运算符的“缺点”。强制转换失败不会引发异常。
    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2012-08-31
    • 2011-11-21
    • 2012-10-01
    • 1970-01-01
    相关资源
    最近更新 更多