使用DataGridTemplateColumn显示按钮或图像

时间:2014-01-16 15:49:47

标签: c# silverlight datagrid datagridtemplatecolumn

我有一个我生成的邮件列表,并在dataGrid中显示一些细节。

有些会奏效,有些会出错。

我想在最后一个datagrid列中显示一个按钮,如果该过程成功,或者是一个图像,如果该过程失败。

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

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

此按钮将打开文档。

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

我可以将图像添加到我的datagridTemplateColumn中,然后根据流程的成功或失败(很容易知道)来显示其中一个图像吗?

如果我不能,我怎么能在这里做我想做的事?我可以在不添加到不同列的情况下执行此操作吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将图像与Button一起添加,并将每个图像的可见性绑定到流程的成功/失败

答案 1 :(得分:0)

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

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

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

 </Grid.Resources>

然后在运行时,可能在Load / LoadingRow事件

//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"];

请注意,我没有给你正确的代码,只有你的想法。

希望有所帮助