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