0

我正在使用 Xamarin Forms 和 MVVMLight。

所以我用 ListView 替换了一个“病人”列表。ListView 的每个元素都有一个删除按钮。单击时,从列表中删除患者,并使用 RaisePropertyChanged() 通知视图。

现在的问题是,当我添加多个患者然后想删除一个时。总是在视图中删除最后一个。我调试了应用程序,发现正确的应用程序已从我的列表中删除。但是当视图更新它的数据时,总是最后一个条目被删除。

    <ListView ItemsSource="{Binding Patients}" HasUnevenRows="true" x:Name="Patientlist">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.View>
                            <StackLayout Orientation="Horizontal" VerticalOptions="FillAndExpand">
                                <StackLayout HorizontalOptions="FillAndExpand">
                                    <Label Text="Patient" Style="{DynamicResource TitleStyle}"/>
                                    <Label Text="Benötigte Proben"/>
                                    <Label Text="Untersuchungen"/>
                                    <Button Text="Bearbeiten" />
                                </StackLayout>
                                <StackLayout HorizontalOptions="FillAndExpand">
                                    <Label Text="{Binding PatientID}"/>
                                    <Label Text="Test"/>
                                    <Label Text="Test"/>
                                    <Button Text="Löschen" Command="{Binding DelCMD}"/>
                                </StackLayout>
                            </StackLayout>  
                        </ViewCell.View>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

所以这是我的 ListView。按钮“Löschen”是删除按钮。它执行以下命令:

private RelayCommand delCMD;

    public RelayCommand DelCMD
    {
        get
        {
            return delCMD ?? (delCMD = new RelayCommand (()=>Messenger.Default.Send<PatientM> (this, "delPat")));
        }
    }

此代码在我的 PatientModel-Class 中。并向删除元素的 VM 发送消息。

        public void delPatient(PatientM Patient)
    {
        Patients.Remove (Patient);
        RaisePropertyChanged ("Patientlist");
    }

然后在 VM 中执行此代码。就像我说的那样,从列表中删除了正确的患者 (Patients.Remove)。但是在调用 RaisePropertyChanged 之后,错误是元素在视图中被删除了。总是最后一个甚至很难我在列表中删除另一个。

4

0 回答 0