【发布时间】:2019-08-27 02:42:27
【问题描述】:
我使用了自动生成的Datagrid列的Datatemplate设置为true,我想动态绑定Datatemplate中的列名,这样我就可以为所有列使用一个Datatemplate,可以吗??
我已尝试使用 DataGridTemplateColumn 和 DataTemplate,但看起来我必须为每个列创建 DataGridTemplateColumn,因此请继续使用 DataTemplate。
使用 DataTemplate 的目的是根据列值显示图像。
XAML:
<Image Name="theImage" Width="40" Height="30" Source="../Resources/Help.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Col1}" Value="0,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/minus-256.png"/>
<DataTrigger Binding="{Binding Path=Col1}" Value="1,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/greenRoundTick.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Col1}" Value="2,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/redCross.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate>
<Image Name="theImage" Width="40" Height="30" Source="../Resources/Help.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Col2}" Value="0,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/minus-256.png"/>
<DataTrigger Binding="{Binding Path=Col2}" Value="1,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/greenRoundTick.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Col2}" Value="2,00">
<Setter TargetName="theImage" Property="Source" Value="../Resources/pmIcons/redCross.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
Pm.xaml.vb:
Private Sub AutoGeneratingColumn(sender As Object, e As DataGridAutoGeneratingColumnEventArgs)
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.CellTemplate = CType(grdTotal.FindResource("test"), DataTemplate)
e.Column = oGrdTemplate
预期:上面的代码有效,但我有 40 列,所以我必须将相同的 DataTemplate 复制 40 次。我觉得这不是更好的方法。我想在每个列中将相应的列名绑定为 Col1、Col2、Col3 等。如果不是在代码隐藏中,它有没有办法在 Xaml 中很好地绑定?
我尝试使用<DataTrigger Binding="{Binding Path=.}" Value="0,00"> 不起作用。
【问题讨论】:
标签: wpf vb.net data-binding datagrid