我尝试使用ListBox
来显示一组Type
名称
在XAML:
<ListBox x:Name="box"></ListBox>
并在代码中
box.ItemsSource= new List<Type>(){typeof(double), typeof(int)};
但是ListBox
显示空字符串,虽然我可以感觉到Items
列表中确实有两个项目可以点击。
即使我将ItemTemplate
更改为以下内容,也不会显示类FullName
的{{1}}属性
Type
这里发生了什么?以下显示了名称,但不是我想要的。我希望存储<ListBox x:Name="box">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FullName}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
。
Type
(我试过box.ItemsSource= new List<string>(){typeof(double).FullName, typeof(int).FullName};
,这有同样的问题)
答案 0 :(得分:0)
这真的很奇怪,根本没有绑定错误。我不知道为什么当你直接绑定到Type
对象时它会发生(也许它与System
命名空间有关),但有一种解决方法是创建一个包装器类:
public class TypeWrapper
{
private Type _type;
public TypeWrapper(Type type)
{
_type = type;
}
public Type Type { get { return _type; } }
}
然后按以下方式创建ItemsSource
:
box.ItemsSource = new List<TypeWrapper>()
{
new TypeWrapper(typeof (double)),
new TypeWrapper(typeof (int))
};
在您的XAML中,您使用
<TextBlock Text="{Binding Type.FullName}"></TextBlock>
而不是
<TextBlock Text="{Binding FullName}"></TextBlock>