繁体   English   中英

WPF中的ObservableCollection绑定

[英]ObservableCollection binding in WPF

我有一个ObservableCollection,其中包含自定义类型Item的记录。 我使用该集合作为WPF中ListView的绑定。 该类Item还实现了INotifyPropertyChanged接口。 当我更新ListView中的某些记录时,可以在ListView中看到更改。

所有这些数据都来自WCF服务。 当我调用该服务的客户端对象并调用delete方法删除属于ObservableCollection的项目时,该记录在数据库中被删除,但ListView中的项目未更新。 这是应该如何工作的,还是当我通过服务调用从数据库中删除项目时,应该手动从集合中删除项目吗?

谢谢

这是XAML:

<ListView ItemsSource="{Binding AllItems}" Height="244" IsSynchronizedWithCurrentItem="True"  HorizontalAlignment="Left" Margin="1,25,0,0" Name="listView1" VerticalAlignment="Top" Width="485" >
            <ListView.ContextMenu>
                <ContextMenu AllowDrop="False">
                    <MenuItem Name="openRecord" Header="Open" Click="ContextMenuItem_Click" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" />
                    <MenuItem Name="deleteRecord" Header="Delete" Click="ContextMenuItem_Click" CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" />
                </ContextMenu>
            </ListView.ContextMenu>
            <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <EventSetter Event="MouseDoubleClick" Handler="list_UserItems_ItemMouseDoubleClick" />
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Title}" Header="Title" Width="200" />
                    <GridViewColumn DisplayMemberBinding="{Binding CreatedByName}" Header="Created By" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding CreatedOn}" Header="Created On" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding ExpirationDate}" Header="Expires" Width="100" />
                </GridView>
            </ListView.View>
        </ListView>

如果我了解你的情况,你有两件事

1-一个ObservableCollection用于在通过WCF服务获取的ListView中显示数据。

2-您正在通过WCF在数据库上执行删除操作

很可能您将调用WCF服务方法从数据库中删除记录,并将必须在参数中删除的对象传递给它。 如果是这种情况或类似情况,则您不会对绑定到ListView ObservableCollection进行任何更改。 这意味着您的视图不会受到任何影响

您应该手动从ObservableCollection删除记录以更新列表,或者删除后,您应该通过WCFDB请求新列表,并将旧的ObservableCollection替换为通过WCF检索到的新列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM