C#:WPF MultiValueConverter将object []检查为null

时间:2014-12-27 07:30:01

标签: c# wpf converter

现在我正在使用WPF并创建自定义MessageControl。 消息控制有2个属性:
1.字符串细节
2.字符串解决方案
我有实现IMultiValueConverter的VisibilityConverter,在Convert方法中我需要检查详细信息和解决方案。如果明细或解决方案不是null,而不是string.Empty或不是DependencyProperty.UnsetValue我需要返回Visibility.Visible。问题是转换器参数valuesobject[]。如果我做values[0].ToString()并且values[0]为空时抛出异常此处。现在我的代码是有效的,但它是多行代码。我的变体在这里:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            //if Detail or Solution is not null,not empty and not UnsetValue than show control
            if (values[0] != null && values[0] != DependencyProperty.UnsetValue)
            {
                if (values[0].ToString() != string.Empty)
                {
                    return Visibility.Visible;
                }
            }

            if (values[1] != null && values[1] != DependencyProperty.UnsetValue)
            {
                if (values[1].ToString() != string.Empty)
                {
                    return Visibility.Visible;
                }
            }
            return Visibility.Collapsed;
        }

有没有最好的方法来检查最小代码行?
提前谢谢!

1 个答案:

答案 0 :(得分:1)

这样的事情应该有用(尝试一下,我没有):

    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        if (values.Any(v => v == null || v == DependencyProperty.UnsetValue || string.IsNullOrEmpty(v.ToString()))) return Visibility.Collapsed;
        return Visibility.Visible;
    }

修改
谢谢你的想法,它对我有用!

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            //if Detail or Solution is not null,not empty and not UnsetValue than show control 
            if (values.Any(v => v is string && !string.IsNullOrEmpty(v.ToString()))) return Visibility.Visible;
            return Visibility.Collapsed;
        }