WinRT应用程序:当ItemsSource为List <type>时,ComboxBox和ListBox不显示任何内容

时间:2016-01-16 04:02:21

标签: c# xaml combobox listbox windows-runtime

我尝试使用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}; ,这有同样的问题)

1 个答案:

答案 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>