不,您不能绑定到扩展方法。您可以绑定到 -object 的Name
-propertyDog
并使用转换器。
要创建转换器,请创建一个实现IValueConverter
接口的类。您只需要单向转换(从模型到视图),因此Convert
只需要实现该方法。ConvertBack
您的转换器不支持该方法,因此会抛出NotSupportedException
.
public class NameToBarkConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var dog = value as Dog;
if (dog != null)
{
return dog.BarkYourName();
}
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
然后你可以使用你的转换器如下:
<Grid>
<Grid.Resources>
<NameToBarkConverter x:Key="NameToBarkConverter" />
</Grid.Resources>
<TextBlock Text="{Binding Name, Converter={StaticResource NameToBarkConverter}}" />
</Grid>
有关转换器的更多信息,请参阅MSDN:IValueConverter。