【发布时间】:2014-08-30 11:03:53
【问题描述】:
对于我正在做的一个 WPF 项目,我关注了 MSDN 的 tutorials 线程、调度程序等。 但我无法让 UI 更新。唯一不同的是,我正在更新一个 DataTable,并将该 DataTable 绑定到我的 XAML。
下面是代码:
Sub Approve_Click(obj As Object, e As RoutedEventArgs)
btnApprove.Dispatcher.BeginInvoke(DispatcherPriority.Normal, New ApproveDelegate(AddressOf ApproveThread))
End Sub
Sub ApproveThread()
Dim Invoice_Model As New COGENT_Model.Invoice_Model
For Each row In dt.Rows
If row("check") = True Then
Try
'//calling db functions here...
row("status") = 1
Catch ex As Exception
row("message") = ex.Message
row("status") = 2
End Try
End If
Next
End Sub
这是我的 xaml:
<DataGrid x:Name="dgvApprove" BorderThickness="1,0,0,0" SelectionMode="Single" AutoGenerateColumns="False"
CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False" RowDetailsVisibilityMode="Collapsed">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="IsReadImage" Source="../Images/Status/statusNone.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding status,Mode=TwoWay}" Value="1">
<Setter TargetName="IsReadImage" Property="Source" Value="../Images/Status/statusApproved.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding status,Mode=TwoWay}" Value="2">
<Setter TargetName="IsReadImage" Property="Source" Value="../Images/Status/statusCanceled.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridCheckBoxColumn Binding="{Binding check}"/>
<DataGridTextColumn Binding="{Binding name_full}"/>
<DataGridTextColumn Binding="{Binding status}"/>
<DataGridTextColumn Binding="{Binding message}"/>
</DataGrid.Columns>
</DataGrid>
在窗口加载时,我正在应用 ItemSource 属性。这段代码通常可以正常工作,可以满足我的所有需求,但在全部完成之前不会更新 UI。
快速解释:如果批准,我基本上想要绿色图像,如果出现问题,我想要红色图像。
任何帮助将不胜感激!
【问题讨论】:
标签: .net wpf multithreading xaml