我有一个
ObservableCollection<object>
我们考虑我们有2个项目:
int a = 1;
string str = "hey!";
我的xaml文件通过DataContext访问它,我想用Binding显示对象的Type(System.Type)。 这是我的代码
<TextBlock Text="{Binding}"/>
我想在我的TextBlocks中显示:
int
string
感谢您的帮助!
答案 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}}" />