2012-07-10 53 views
2

DataTemplate如何应用于Grid将DataTemplate应用于网格

我在Resources.xaml文件DataTemplate名为DataGrid_Template,我想申请到GridView.xaml


Resources.xaml

<ResourceDictionary ... > 
    <DataTemplate x:Key="DataGrid_Template"> 
     <Grid> 
      <Grid.RowDefinitions ... /> 
      <DockPanel ... /> 
      <DataGrid ... /> 
     </Grid> 
    </DataTemplate> 
</ResourceDictionary> 


View.xaml

<UserControl ... > 
    <Grid /> <!-- want to apply DataGrid_Template to this --> 
</UserControl> 


我尝试使用Grid财产TemplatedParent,但似乎是只读的属性

+0

你们是不是要使用Grid作为'ItemsControl',还是更复杂的东西? – Tyrsius 2012-07-10 19:47:41

+0

看到这些链接:http://stackoverflow.com/questions/3251081/is-there-a-datatemplate-for-grid-panel-elements-in-wpf,http://stackoverflow.com/questions/3223174/changing -wpf-stackpanel-template - >你不能直接使用 – Clueless 2012-07-10 19:50:12

+0

@Tyrsius我没有使用'Grid'作为'ItemsControl'。查看“Resources.xaml”的更新代码片段。我想要一个'DockPanel'和一个'DataGrid'。 – mauryat 2012-07-10 20:11:11

回答

8

您不能将DataTemplates应用于面板(例如网格)。

如果您只是希望将该模板放置在somwhere中,那么您可以使用ContentControl并将其设置为ContentTemplate通过StaticResource

ContentControl.Content需要设置的东西,否则ContentTemplate不适用,如果没有真正的“内容”设置Template而应正常工作。)

+0

这工作得很好!对不起,我想我把我的代码中的拼写错误弄糊涂了。我的意思是'DataTemplate',但是错误地输入在ControlTemplate中。 – mauryat 2012-07-10 21:18:32

+1

@ user640378:控件模板可能也会工作(因为您似乎没有任何“Content”中使用的数据),您只需将其指定为“ContentControl.Template”。 – 2012-07-10 21:23:27

+1

如果有人想知道,这里有一个使用DataTemplate的XAML示例,其中GridSettingsTemplate是包含网格定义的DataTemplate的名称。将Horizo​​ntalAlignment和VerticalAlignment设置为Stretch,或者您的网格看起来与之前将其迁移到DataTemplate中不同: John 2014-03-18 21:45:26