不,你不能綁定到擴展方法。您可以綁定到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 /訪問擴展的方法,通過數據結合 –