0

我正在为此苦苦挣扎大约 2 天,但无法得到我的问题的答案或解决方案。我正在使用 C# WPF,我的问题在这里:

我有一个 ItemsSource 被绑定的 Datagrid。每个 TextColumn 都正确显示其值。只要我不输入该单元格,包含图片或按钮的 DataTemplateColumns 就不会显示其值。我想让我的 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”的字符串。

提前致谢

4

1 回答 1

2

而不是使用CellEditingTemplate,你应该使用CellTemplate-

<DataGridTemplateColumn.CellTemplate>
   ......              
</DataGridTemplateColumn.CellTemplate>

一旦您双击单元格使其可编辑,就会显示 CellEditingTemplate。而 CellTemplate 是您正在寻找的。

于 2012-08-15T19:11:51.757 回答