【问题标题】:How can I specify the template for a silverlight datagrid column?如何为 silverlight datagrid 列指定模板?
【发布时间】:2011-05-13 23:45:35
【问题描述】:

我有一个具有 AutoGenerateColumns="True" 的 DataGrid。我将该 DataGrid 绑定到设计时数据类型未知的对象集合。

DataGrid 能够识别特定列绑定到的数据类型。如果内容分别是文本或布尔值,它会显示一个文本块或一个复选框。

如果数据属于特定类型,我想以特定方式(即 DataTemplate)显示数据。有没有办法做到这一点?

【问题讨论】:

  • 你知道你需要多少列吗?忽略数据类型?
  • 不,我可以绑定到一个有 8 个属性或一个有 25 个属性的对象。属性的所有不同数据类型。如果数据类型是“RickLinkAction”,我想显示一个 LinkBut​​ton。如果它是一个字符串,我会想要显示一个 TextBlock。如果是“RickCalendarAction”,我会想显示其他内容。

标签: silverlight datagrid


【解决方案1】:

由于您不知道可能存在的列,您必须恢复到后面的代码。如果您知道给定对象将始终具有 8 个属性以及类型;您可以将此行为移到 XAML 中,而不必处理事件的处理。

MSDN 参考总结了如何完成此任务,但归结为处理 AutoGeneratingColumn 事件。

private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{

     ...

}

【讨论】:

  • 我试过了,但它不适合我。我的datagrid绑定的类型是在运行时动态创建的类型...所以我的dataGrid不能指定属性名...
  • 事件处理不起作用或使用纯 XAML 不起作用?
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2011-01-02
  • 2014-01-06
  • 2011-05-04
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多