设置CellStyle属性时出现异常

时间:2011-04-19 19:13:41

标签: silverlight datagrid

在SL4中,当从代码中为DataGridTemplateColumn设置CellStyle时,我得到以下异常:

MS.Internal.WrappedException:'缺少模板的类型初始值设定项。无法初始化System.Windows.Controls.DataGridTemplateColumn。'抛出异常。

代码如下所示:

grdMain.IsReadOnly = true;   
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();  templateColumn.HeaderStyle = (Style)this.Resources["ImageColumnHeaderStyle"]; 

templateColumn.CellStyle = (Style)this.Resources["CellStyle1"];  // This causes the exception   

//templateColumn.CellTemplate = (DataTemplate)this.Resources["DataTemplate1"];  // This works!      

grdMain.Columns.Add(templateColumn);

标记非常简单:

<Control.Resources>

   <Style x:Key="ImageColumnHeaderStyle" TargetType="sdk:DataGridColumnHeader">
    ...
   </Style>        

   <DataTemplate x:Key="DataTemplate1"> 
      <TextBlock>abcde</TextBlock>     
   </DataTemplate>       

  <Style x:Key="CellStyle1"  TargetType="sdk:DataGridCell"> 
   <Setter Property="Template" Value="{StaticResource DataTemplate1}">                 
</Setter>

  </Style>
</Control.Resources>

   <Grid x:Name="LayoutRoot">
       <sdk:DataGrid AutoGenerateColumns="False" Height="413" Name="grdMain" Width="335" />
   <Grid>

由于样式除了将模板设置为DataTemplate1之外什么也没做,我真的很困惑!

为什么我从代码设置CellTemplate时却没有,但是当我通过CellStyle属性设置它时呢?

谢谢

//彼得

1 个答案:

答案 0 :(得分:1)

任何控件的Template属性都需要ControlTemplate而不是DataTemplate,因为您的代码似乎正在尝试。 此: -

<Setter Property="Template" Value="{StaticResource DataTemplate1}" />

应该是这样的: -

<Setter Property="ContentTemplate" Value="{StaticResource DataTemplate1}" />