C# 使用DataGridTemplateColumn显示按钮或图像

C# 使用DataGridTemplateColumn显示按钮或图像,c#,silverlight,datagrid,datagridtemplatecolumn,C#,Silverlight,Datagrid,Datagridtemplatecolumn,我有一个生成的邮件列表,并在数据网格中显示一些细节 有些会起作用,有些会出错 如果进程成功,我想在最后一列datagrid中显示一个按钮,如果进程失败,则显示一个图像 所以,我用一个按钮就得到了这个: <sdk:DataGridTemplateColumn Header="Voir"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button

我有一个生成的邮件列表,并在数据网格中显示一些细节

有些会起作用,有些会出错

如果进程成功,我想在最后一列datagrid中显示一个按钮,如果进程失败,则显示一个图像

所以,我用一个按钮就得到了这个:

 <sdk:DataGridTemplateColumn Header="Voir">
   <sdk:DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
          <Button Name="btOpen" 
                  Click="btOpen_Click"
                  IsEnabled="True"/>
          </DataTemplate>
     </sdk:DataGridTemplateColumn.CellTemplate>
 </sdk:DataGridTemplateColumn>

此按钮将打开文档

但正如我所说,某些进程可能会失败,因此我必须显示一个图像,而不是按钮

我是否可以在datagridTemplateColumn中添加一个图像,然后根据过程的成功或失败(很容易知道)显示其中一个图像

如果我不能,我怎么能在这里做我想做的?我可以不添加到不同的列吗


谢谢。

您可以将图像添加到按钮旁边,并将每个按钮的可见性绑定到过程的成功/失败上

尝试在xaml上创建两个不同的模板。一个有图像,一个有按钮。然后在运行时,您可以根据需要更改它

<Grid.Resources>
 <DataTemplate x:key="ImageDT">
    <Image>
 </DataTemplate>

 <DataTemplate x:key="ButtonTemplate">
    <Button>
 </DataTemplate>

 </Grid.Resources>
请注意,我没有给你正确的代码,只是给了你想法


希望对您有所帮助

您可以将这两个块放在同一个dataGridTemplateColumn中。但我确实可以使用转换器更改样式和Enable属性。
//Here you get the row or column or cell you need

if(ProcessSuccess)
   Grid.Columns["Voir"].CellTemplate = Grid.Resources["ImageDT"] ;
else 
   Grid.Columns["Voir"].CellTemplate = Grid.Resources["ButtonTemplate"];