當在SL4從代碼中設置CellStyle的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,我真的很困惑!
爲什麼它在我通過CellStyle屬性設置CellTemplate而不是代碼時工作?
感謝
//彼得
歡迎的話,請花幾分鐘閱讀FAQ和降價文件(一個有用的synposis其在右可用編輯問題時手邊距)。 – AnthonyWJones 2011-04-19 19:24:23
它必須是在CellStyle1聲明中的一些東西,因爲我試過了你的代碼,它的工作 – 2011-04-19 19:26:05