標記擴充套件與 IValueConverter 一起使用

標記擴充套件的最佳用途之一是更容易使用 IValueConverter。在下面的示例中,BoolToVisibilityConverter 是一個值轉換器,但由於它與例項無關,因此可以在沒有標記擴充套件的幫助下使用值轉換器的正常 hasles。在 XAML 中使用

Visibility="{Binding [BoolProperty], Converter={[xmlns]:BoolToVisibilityConverter}}"

並且你可以將專案可見性設定為 bool 值。

public class BoolToVisibilityConverter : MarkupExtension, IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is bool)
                return (bool)value ? Visibility.Visible : Visibility.Collapsed;
            else
                return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is Visibility)
            {
                if ((Visibility)value == Visibility.Visible)
                    return true;
                else
                    return false;
            }
            else
                return false;
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }