绑定到“object.GetType()”?

时间:2011-11-23 15:23:14

标签: wpf xaml data-binding

我有一个

ObservableCollection<object>

我们考虑我们有2个项目:

int a = 1;
string str = "hey!";

我的xaml文件通过DataContext访问它,我想用Binding显示对象的Type(System.Type)。 这是我的代码

<TextBlock Text="{Binding}"/>

我想在我的TextBlocks中显示:

int
string

感谢您的帮助!

1 个答案:

答案 0 :(得分:10)

您需要使用IValueConverter来执行此操作。

[ValueConversion(typeof(object), typeof(string))]
public class ObjectToTypeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value == null ? null : value.GetType().Name // or FullName, or whatever
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new InvalidOperationException();
    }
}

然后将其添加到您的资源中......

<Window.Resources>
    <my:ObjectToTypeConverter x:Key="typeConverter" />
</Window.Resources>

然后在绑定上使用它

<TextBlock Text="{Binding Mode=OneWay, Converter={StaticResource typeConverter}}" />