如何更新Xamarin表单中的DevExpress CollectionView行?

问题描述 投票:0回答:1

我正在开发一个 xamarin 表单应用程序。我希望用户选择一些值,然后更新 CollectionView 以显示该行上的选定值。 2 是选定的值。它出现在此处,但有时会出现“索引超出范围”的错误。必须为非负数且小于集合的大小。 参数名称:索引'

C# 代码

ObservableCollection<DynamicReportsParameters> reportsParameters; public ObservableCollection<DynamicReportsParameters> ReportsParameters { get { if (reportsParameters == null) ReportsParameters = new ObservableCollection<DynamicReportsParameters>(); return reportsParameters; } set => reportsParameters = value; } void fun () { int ix = 0; if (veri1List[i] != "0") { ix = Int32.Parse(veri1List[i]); } if (ReportsParameters[ix] != null) { Console.WriteLine("veri2 list 0 :" + veri2List[0]); Console.WriteLine("ix :" + ix); DynamicReportsParameters dnp = new DynamicReportsParameters() { ACIKLAMA = ReportsParameters[ix].ACIKLAMA, ACIKLAMA2 = veri2List[0], KODID = ReportsParameters[ix].KODID, ORJVALUE = ReportsParameters[ix].ORJVALUE, PID = ReportsParameters[ix].PID, SECIM = ReportsParameters[ix].SECIM, TYPE = ReportsParameters[ix].TYPE, VIEW_QUERY = ReportsParameters[ix].VIEW_QUERY, VNUMBER = ReportsParameters[ix].VNUMBER, }; ReportsParameters.Insert(ix, dnp); ReportsParameters.RemoveAt(ix + 1); //Console.WriteLine("AÇIKLAMA :" + ReportsParameters[ix].ACIKLAMA); //ReportsParameters[ix].ACIKLAMA = "MERT"; //Console.WriteLine("AÇIKLAMA :" + ReportsParameters[ix].ACIKLAMA); OnPropertyChanged(); }

XAML 代码

<dxcv:DXCollectionView ItemsSource="{Binding ReportsParameters, Mode=TwoWay}" SelectionMode="Single" Margin="8, 2, 8, 2" VerticalOptions="StartAndExpand" TapCommand="{Binding QueryPageOpenCommand}" SelectedItems="{Binding SelectedReportsParameters}" > <dxcv:DXCollectionView.ItemTemplate> <DataTemplate> <Grid Padding="10, 8, 18, 8"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <!--<ColumnDefinition Width="5*"/>--> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="30"/> <!--<RowDefinition/>--> </Grid.RowDefinitions> <Label Text="{Binding ACIKLAMA}" FontSize="Medium" Grid.Column="0" Grid.Row="0" Margin="0,2" TextColor="Black"/> <Label Text="{Binding ACIKLAMA2}" FontSize="Medium" Grid.Column="1" Grid.Row="0" Margin="0,2" TextColor="Black" /> <Image Source="@drawable/touch.png" HeightRequest="20" Grid.Column="2" Grid.Row="0" /> </Grid> </DataTemplate> </dxcv:DXCollectionView.ItemTemplate> </dxcv:DXCollectionView>
    
c# xamarin xamarin.forms devexpress
1个回答
0
投票
关于

DXCollectionView的官方文档说道:

选择模式 = 单次

当用户选择(点击)某个项目时,SelectedItem 属性将设置为一个对象,该对象指定数据源中与列表中所选项目相对应的项目。当用户再次点击所选项目时,选择将被清除,并且 SelectedItem 属性将设置为 null。 要以编程方式选择项目,请将数据源的项目对象分配给视图模型的属性并将 SelectedItem 属性绑定到它。

所以您应该将

SelectedItems="{Binding SelectedReportsParameters}"

 更改为 
SelectedItem="{Binding SelectedReportsParameters}"
 或将 
SelectionMode="Single"
 更改为 
SelectionMode = Multiple

此外,您还可以为所选项目绑定添加

Mode=TwoWay

© www.soinside.com 2019 - 2024. All rights reserved.