public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool? retVal = null;
if (values != null)
{
foreach (var val in values)
{
var asBool = val as bool?;
if (asBool != null)
{
if (retVal.HasValue) { retVal = retVal.Value && asBool.Value; }
else { retVal = asBool.Value; }
}
else
{
var asVis = val as Visibility?;
if (asVis != null)
{
if (retVal.HasValue) { retVal = retVal.Value && (asVis.Value == Visibility.Visible); }
else { retVal = asVis.Value == Visibility.Visible; }
}
}
}
}
if (parameter != null && string.Equals("not", parameter.ToString(), StringComparison.OrdinalIgnoreCase))
{
retVal = !retVal.GetValueOrDefault();
}
return retVal.GetValueOrDefault() ? Visibility.Visible : Visibility.Collapsed;
}