標記擴充套件與 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;
}
}