繁体   English   中英

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

[英]C#: WPF MultiValueConverter checking object[] to null

现在,我正在使用WPF并创建自定义MessageControl。 邮件控件具有2个属性:
1.字符串详细信息
2.字符串解决方案
我有实现IMultiValueConverter VisibilityConverter,在Convert方法中,我需要检查Detail和Solution。 如果Detail或Solution不为null ,则不是string.Empty还是DependencyProperty.UnsetValue我需要返回Visibility.Visible 问题是转换器参数中的valuesobject[] 如果我执行values[0].ToString()并且当values[0]为null时,则会在此处引发异常。现在,我的代码可以工作了,但是它包含很多行代码。 我的变体在这里:

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;
        }

是否有最好的方法用最少的代码行检查它?
提前致谢!

这样的事情应该可以工作(尝试,我没有):

    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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM