簡體   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