Привязка к «object.GetType ()»? - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть

ObservableCollection<object>

Давайте рассмотрим 2 элемента:

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

Мой файл xaml обращается к нему через DataContext, и я хотел бы отобразить тип (System.Type) объекта с привязкой. Вот код, который у меня есть

<TextBlock Text="{Binding}"/>

И я хотел бы отобразить в моих TextBlocks:

int
string

Спасибо за любую помощь!

1 Ответ

10 голосов
/ 23 ноября 2011

Для этого вам нужно будет использовать 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}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...