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