在WPf VB.net Datagrid中,我必须基于值绑定图像,因此我尝试为每个列绑定DataGridTemplateColumn。但我得到的错误 “ System.ArgumentException:”带有标题的DataGridColumn“”已经存在于DataGrid的列集合中。DataGrids无法共享列,并且不能包含重复的列实例。 Paremetername:项目
我在
中尝试了以下选项AutoGeneratingColumn事件
1)e.Column = CType(grdTotal.FindResource("booleanImageTemplate"), DataGridTemplateColumn)
2)
Dim oGrdTemplate As DataGridTemplateColumn = New DataGridTemplateColumn
oGrdTemplate.Header = e.Column.Header
oGrdTemplate = CType(grdTotal.FindResource("booleanImageTemplate"), DataGridTemplateColumn)
e.Column = oGrdTemplate
但是给出相同的错误。
<DataGridTemplateColumn x:Key="booleanImageTemplate">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="theImage" Width="64" Height="64" Source="../Resources/Help.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Col5}" Value="0,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/PM.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Col6}" Value="1,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/PE.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Private Sub AutoGeneratingColumn(sender As Object, e As DataGridAutoGeneratingColumnEventArgs)
Dim sSpaltenbreite As String
Dim sElementTyp As String = ""
If e.PropertyName = "IsReadable" Or e.PropertyName = "HasValue" Then
e.Cancel = True
Exit Sub
End If
Dim oGrdTemplate As DataGridTemplateColumn = New DataGridTemplateColumn
oGrdTemplate.Header = e.Column.Header
oGrdTemplate = CType(grdTotal.FindResource("booleanImageTemplate"), DataGridTemplateColumn)
e.Column = oGrdTemplate
End Sub
在使用DatagridTemplateColumn和data.triggers动态绑定行和列之后,我想基于单元格值显示单元格中的图像。
或者有没有其他值得高度赞赏的建议。