现在我正在使用WPF并创建自定义MessageControl。
消息控制有2个属性:
1.字符串细节
2.字符串解决方案
我有实现IMultiValueConverter
的VisibilityConverter,在Convert
方法中我需要检查详细信息和解决方案。如果明细或解决方案不是null
,而不是string.Empty
或不是DependencyProperty.UnsetValue
我需要返回Visibility.Visible
。问题是转换器参数values
为object[]
。如果我做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;
}
有没有最好的方法来检查最小代码行?
提前谢谢!
答案 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;
}