您可以同時使用參數和參數。示例:
<converters:VisibilityConverter x:Key="inversVisibConverter" Inverse="True"/>
Visibility="{Binding ABoolValue, Mode=OneWay, Converter={StaticResource inversVisibConverter},ConverterParameter=abc}"
轉換器(同時包含參數和參數):
public sealed class VisibilityConverter : IValueConverter {
public bool Inverse { get; set; }
#region Implementation of IValueConverter
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Visibility visibility = Visibility.Visible;
if (value is bool)
{
visibility = (bool) value ? Visibility.Visible : Visibility.Collapsed;
}
if(parameter != null)
{
//handle parameter here:
}
if (Inverse)
{
visibility = (visibility == Visibility.Visible) ? Visibility.Collapsed : Visibility.Visible;
}
return visibility;
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
if (!(value is Visibility)) {
throw new ArgumentOutOfRangeException("value", "VisibilityConverter can only convert from Visibility");
}
if (targetType == typeof(bool)) {
return ((Visibility)value == Visibility.Visible) ? true : false;
}
throw new ArgumentOutOfRangeException("targetType", "VisibilityConverter can only convert to Boolean");
}
#endregion
}
雖然我更喜歡使用參數,但您的解決方案很有趣,如果使用該屬性並將其鏈接到枚舉,則可以解決我的問題。然後我只能使用定義的枚舉值。謝謝! – fergie