Работая с VB. Net WPF, у меня есть форма со списком, которая связана с наблюдаемой коллекцией. Наблюдаемая коллекция заполняется программно из веб-API, я создал кнопки для «Пометки» строк для последующего просмотра (также отображается в виде списка с колонкой «Пометить»). Я легко обновил содержимое на стороне базы данных через API. однако я изо всех сил пытаюсь обновить либо просмотр списка (кажется, что правильным шагом было бы обновить наблюдаемую коллекцию, поскольку они связаны).
Я также признал, что другой вариант - очистить наблюдаемую коллекцию (и, следовательно, список) и перезагрузите данные из API, однако в идеале я хочу, чтобы представление списка фокусировалось на элементе, выбранном до изменения данных.
вот так: 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>
Структура / Observablecollection
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
Спасибо за любую помощь.