프로젝트에서 우리가하는 일은 일반적인 BooleanToVisibilityConverter를 만드는 것으로, 변환기는 하나의 매개 변수 (모든 것은 문자열, int, bool 등)를 취합니다. 매개 변수가 설정되면 결과가 반전되고 그렇지 않으면 일반 결과가 출력됩니다.
public class CombiningConverter : IValueConverter
{
public IValueConverter Converter1 { get; set; }
public IValueConverter Converter2 { get; set; }
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
object convertedValue = Converter1.Convert(value, targetType, parameter, culture);
return Converter2.Convert(convertedValue, targetType, parameter, culture);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
나는 다음과 같이 호출 :
public class BooleanToVisibilityConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool? isVisible = value as bool?;
if (parameter != null && isVisible.HasValue)
isVisible = !isVisible;
if (isVisible.HasValue && isVisible.Value == true)
return Visibility.Visible;
else
return Visibility.Collapsed;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
#endregion
}
네, 링크 된 솔루션은 아마도 최고 일 것입니다 ... –
도 참조하십시오 [XAML에서 다중 변환기 연결하기] (http://stackoverflow.com/q/2607490/2032064) – Mifeet
마을은 [여기] (http://stackoverflow.com/a/8326207/526704), 그의 솔루션은 jberger의 대답과 마찬가지로 원하는만큼 체인을 연결할 수있게 해줍니다.하지만이 코드는 더 우아하고 구현이 짧습니다. – DLeh