可观察的集合中改变细胞含量

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

使用VB.Net WPF,我有一个带有Listview的表单,该表单的数据绑定到一个ObservableCollection。可观察的集合是通过基于Web的API以编程方式填充的,我为“标记”行创建了按钮以供以后查看(也显示在列表视图中的“标记”列中。我已通过api轻松更新了数据库端的内容但是我正在努力更新任何一个列表视图(似乎正确的举动是因为绑定了observablecollection。)

我还认识到另一种选择是清除observablecollection(因此是listview)并从api重新加载数据,但是理想情况下,我想让listview专注于在更改数据之前选择的项目。

这里:XAML

   <ListView x:Name="QALog" Grid.ColumnSpan="2" HorizontalAlignment="Left" Height="795" Margin="10,100,0,0" VerticalAlignment="Top" Width="1472" ItemsSource="{Binding}" FontSize="14">

        <ListView.View>
            <GridView>
                <GridViewColumn Header="Id" Width="20" DisplayMemberBinding="{Binding Id}"/>
                <GridViewColumn Header="Flag" Width="100" DisplayMemberBinding="{Binding Flag}"/>
                <GridViewColumn Header="Date" Width="100" DisplayMemberBinding="{Binding Dateofcall}"/>
                <GridViewColumn Header="Time" Width="100" DisplayMemberBinding="{Binding Timeofcall}"/>
                <GridViewColumn Header="Caller" Width="175" DisplayMemberBinding="{Binding CID}"/>
                <GridViewColumn Header="Service" Width="75" DisplayMemberBinding="{Binding Calltype}"/>
                <GridViewColumn Header="Accepted" Width="75" DisplayMemberBinding="{Binding ETAaccepted}"/>
                <GridViewColumn Header="Act. BLS" Width="75" DisplayMemberBinding="{Binding Activebls}"/>
                <GridViewColumn Header="Act. ALS" Width="75" DisplayMemberBinding="{Binding Activeals}"/>
                <GridViewColumn Header="Low ETA" Width="75" DisplayMemberBinding="{Binding Loweta}"/>
                <GridViewColumn Header="High ETA" Width="75" DisplayMemberBinding="{Binding Higheta}"/>
                <GridViewColumn Header="Details" Width="250" DisplayMemberBinding="{Binding Details}"/>
                <GridViewColumn Header="Dispatcher" Width="125" DisplayMemberBinding="{Binding Userid}"/>
                <GridViewColumn Header="Comments" Width="175" DisplayMemberBinding="{Binding Comments}"/>
            </GridView>
        </ListView.View>
    </ListView>

结构/可观察的集合

    Public Structure Calls
    Private _Id As String
    Private _Flag As String
    Private _Dateofcall As String
    Private _Timeofcall As String
    Private _CID As String
    Private _Calltype As String
    Private _ETAaccepted As String
    Private _Activebls As String
    Private _Activeals As String
    Private _Loweta As String
    Private _Higheta As String
    Private _Details As String
    Private _Userid As String
    Private _Comments As String


    Property Id() As String
        Get
            Return _Id
        End Get
        Set(ByVal Value As String)
            _Id = Value
        End Set
    End Property
    Property Flag() As String
        Get
            Return _Flag
        End Get
        Set(ByVal Value As String)
            _Flag = Value
        End Set
    End Property
    Property Dateofcall() As String
        Get
            Return _Dateofcall
        End Get
        Set(ByVal Value As String)
            _Dateofcall = Value
        End Set
    End Property
    Property Timeofcall() As String
        Get
            Return _Timeofcall
        End Get
        Set(ByVal Value As String)
            _Timeofcall = Value
        End Set
    End Property
    Property CID() As String
        Get
            Return _CID
        End Get
        Set(ByVal Value As String)
            _CID = Value
        End Set
    End Property
    Property Calltype() As String
        Get
            Return _Calltype
        End Get
        Set(ByVal Value As String)
            _Calltype = Value
        End Set
    End Property
    Property ETAaccepted() As String
        Get
            Return _ETAaccepted
        End Get
        Set(ByVal Value As String)
            _ETAaccepted = Value
        End Set
    End Property
    Property Activebls() As String
        Get
            Return _Activebls
        End Get
        Set(ByVal Value As String)
            _Activebls = Value
        End Set
    End Property
    Property Activeals() As String
        Get
            Return _Activeals
        End Get
        Set(ByVal Value As String)
            _Activeals = Value
        End Set
    End Property
    Property Loweta() As String
        Get
            Return _Loweta
        End Get
        Set(ByVal Value As String)
            _Loweta = Value
        End Set
    End Property
    Property Higheta() As String
        Get
            Return _Higheta
        End Get
        Set(ByVal Value As String)
            _Higheta = Value
        End Set
    End Property
    Property Details() As String
        Get
            Return _Details
        End Get
        Set(ByVal Value As String)
            _Details = Value
        End Set
    End Property
    Property Userid() As String
        Get
            Return _Userid
        End Get
        Set(ByVal Value As String)
            _Userid = Value
        End Set
    End Property
    Property Comments() As String
        Get
            Return _Comments
        End Get
        Set(ByVal Value As String)
            _Comments = Value
        End Set
    End Property
End Structure

Dim CallsCollection As New ObservableCollection(Of Calls)

Public Sub New()
    InitializeComponent()
    QALog.DataContext = CallsCollection
End Sub

尝试重新分配显然不起作用,因为列出的分配是一个值

    If QALog.SelectedItems.Count > 0 Then
        Dim item = CallsCollection.FirstOrDefault(Function(i) i.CID = QALog.SelectedItem.Id)
        Dim foundindex As Integer = CallsCollection.IndexOf(item)

        CallsCollection(foundindex).Flag = "Review"

    End If

感谢您的帮助。

使用VB.Net WPF,我有一个带有Listview的表单,该表单的数据绑定到一个ObservableCollection。可观察的集合是通过基于Web的API以编程方式填充的,我已经创建了...

wpf vb.net listview
1个回答
0
投票

[Calls需要实现INotifyPropertyChanged

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