不,你不能绑定到扩展方法。您可以绑定到Dog
-object的Name
属性,然后使用转换器。
要创建一个转换器创建一个类实现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。
你可以使用ValueConverter ....也许甚至是自定义的MarkupExtension ..... http://social.msdn.microsoft.com/Forums/vstudio/en-US/29ccf3d0-7504-427d-a5ad-a45ae7ca5ab2 /访问扩展的方法,通过数据结合 –