Silverlight动态获取GridView的 列模板DataTemplate内控件
一个GridView的GridViewColumn定制多层表头HeaderCellStyle,并定制对应的模板DataTemplate,
提供当前GridView对象,
1,获取模板列DataTemplate里面的控件(条件:并不知道控件的名称)
2,获取多层表头HeaderCellStyle的层次和每层的控件(这个貌似无法实现)
请大家提供实现思路
多行表头样式---<Style x:Key="AuditResultHeaderStyle" TargetType="dataprimitives:GridViewHeaderCell" > <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Grid x:Name="Root"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="1" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="90" /> <ColumnDefinition Width="1" /> <ColumnDefinition Width="90" /> <ColumnDefinition Width="1" /> <ColumnDefinition Width="90" /> <ColumnDefinition Width="1" /> </Grid.ColumnDefinitions> <TextBlock Text="第一次稽核结果标注汇总" Grid.Row="0" Grid.ColumnSpan="5" Margin="0,4,0,4" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Rectangle Fill="#FFC9CACA" Grid.Row="0" Grid.Column="5" HorizontalAlignment="Stretch"/> <Rectangle Fill="#FFC9CACA" Grid.Row="1" Grid.ColumnSpan="6" HorizontalAlignment="Stretch"/> <TextBlock Text="无问题数" Grid.Row="2" Grid.Column="0" HorizontalAlignment="Center" Margin="0,4,0,4" VerticalAlignment="Center"/> <Rectangle Fill="#FFC9CACA" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch"/> <TextBlock Text="疑点及问题数" Grid.Row="2" Grid.Column="2" Margin="0,4,0,4" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Rectangle Fill="#FFC9CACA" Grid.Row="2" Grid.Column="3" HorizontalAlignment="Stretch"/> <TextBlock Text="疑点及问题金额" Grid.Row="2" Grid.Column="4" Margin="0,4,0,4" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Rectangle Fill="#FFC9CACA" Grid.Row="2" Grid.Column="5" HorizontalAlignment="Stretch"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>列定义(引用上的HeaderCellStyle,并定制对应的模板DataTemplate)----<telerikGridView:GridViewDataColumn HeaderTextAlignment="Left" HeaderCellStyle="{StaticResource AuditResultHeaderStyle}"> <telerikGridView:GridViewDataColumn.CellTemplate > <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="83 " /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="85" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="85" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding notErrorCount}" VerticalAlignment="Center" TextAlignment="Right"/> <Rectangle Grid.Column="1" Fill="#FFC9CACA" VerticalAlignment="Stretch" Width="1" MinHeight="25"/> <TextBlock Grid.Column="2" Text="{Binding errorAndQuestionCount}" VerticalAlignment="Center" TextAlignment="Right"/> <Rectangle Grid.Column="3" Fill="#FFC9CACA" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="1" MinHeight="25"/> <TextBlock Grid.Column="4" Text="{Binding errorAndQuestionMoneyTotal, StringFormat=C,ConverterCulture=zh-CN}" VerticalAlignment="Center" TextAlignment="Right"/> </Grid> </DataTemplate> </telerikGridView:GridViewDataColumn.CellTemplate> </telerikGridView:GridViewDataColumn>
#region 查找某种类型的子孙节点 /// <summary> /// 查找某种类型的子孙节点 /// </summary> /// <typeparam name="T">目标节点类型</typeparam> /// <param name="parent">起始节点</param> /// <returns>符合条件的节点集合</returns> public static IEnumerable<T> FindChildren<T>(this DependencyObject parent) where T : class { var count = VisualTreeHelper.GetChildrenCount(parent); if (count > 0) { for (var i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(parent, i); var t = child as T; if (t != null) yield return t; var children = FindChildren<T>(child); foreach (var item in children) yield return item; } } }
[解决办法]
问题问的好,专家答的也好。
[解决办法]
顶一个
[解决办法]
学习了