XAML MAUI ListView无法将ItemsSource绑定到ObservableCollection< Type>,引发“Value does not fall within expected range”

lvmkulzt  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(160)

我的ViewModel(我使用CommunityToolkit.MVVM):

public partial class ViewModel : ObservableObject
{
    [ObservableProperty]
    private ObservableCollection<string> _items = new ObservableCollection<string>()
    {
        "abc", "def", "ghi"
    };

    [ObservableProperty]
    private ObservableCollection<Type> _types = new ObservableCollection<Type>()
    {
        typeof(int), typeof(string), typeof(double)
    };
}

我的观点:

<Grid RowDefinitions="1*,1*">
    <ListView ItemsSource="{Binding Items}" />
    <ListView ItemsSource="{Binding Types}" Grid.Row="1"/>
</Grid>

绑定 Items 将工作,绑定到 Types 将在Windows机器上引发“Value does not fall within the expected range”错误,但代码在Android Emulator中工作正常。

lymnna71

lymnna711#

我可以在Windows上重现您的问题。结果是泛型类型参数:ObservableCollection中的T不能定义为System.Type
我注意到你打开了一个新的问题:[Windows] ListView cannot bind to ObservableCollection<System.Type> #16911,你可以在那里跟进。
作为替代解决方案,如果您只想在ListView中显示Type的名称,则可以将其转换为String,如下所示:

public ObservableCollection<string> _types = new ObservableCollection<string>() 
{
      typeof(int).ToString(), typeof(string).ToString(), typeof(double).ToString()
};

相关问题