使用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以编程方式填充的,我已经创建了...
[Calls
需要实现INotifyPropertyChanged
。