Xamarin Forms ListView无法正确更新

时间:2015-05-12 12:03:27

标签: c# android listview mvvm-light xamarin-forms

我正在使用Xamarin Forms和MVVMLight。

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

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

    <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之后错误的是在视图中删除了元素。总是最后一个甚至很难我在列表中删除了另一个。

0 个答案:

没有答案