DataGrid DataTemplate中的不可见图像

时间:2012-08-15 19:08:14

标签: wpf image xaml datagrid datatrigger

我正在努力解决这个问题大约2天,无法得到答案或解决我的问题。 我正在使用C#WPF,我的问题在这里:

我有一个DataSrid,ItemsSource被绑定。每个TextColumn都正确显示其值。包含图片或按钮的DataTemplateColumns不会显示其值,只要我不输入该Cell。我希望我的DataGrid只读,并立即显示图片,而不是单击单元格。但它们只显示您是否单击进入单元格。我已经尝试过不同的图像格式(png,bmp,jpg)

那么DataGrid的问题是什么?

以下是带有DataTemplaceColumn的XAML部分:

<DataGrid AlternatingRowBackground="Gainsboro"
              AlternationCount="2"
              AutoGenerateColumns="False"
              Height="200"
              HorizontalAlignment="Left" 
              ItemsSource="{Binding}"
              Name="DgMain" 
              VerticalAlignment="Top" 
              Width="778" 
              CanUserReorderColumns="False" 
              CanUserResizeColumns="False" 
              CanUserResizeRows="False" 
              CanUserSortColumns="True"
              IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Pic">
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <Image x:Name="ImgDgMainPic"></Image>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding pic}" Value="pic1">
                                <Setter TargetName="ImgDgMainPic" Property="Source" Value="Images\picture1.png"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding pic}" Value="pic2">
                                <Setter TargetName="ImgDgMainPic" Property="Source" Value="Images\picture2.png"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>

DataTriger绑定的值是包含“pic1”或“pic2”的字符串,如您所见。

先谢谢

1 个答案:

答案 0 :(得分:2)

您应该使用CellEditingTemplate -

,而不是使用CellTemplate
<DataGridTemplateColumn.CellTemplate>
   ......              
</DataGridTemplateColumn.CellTemplate>
双击单元格后,将显示CellEditingTemplate以使其可编辑。而CellTemplate就是你要找的。