水平显示Datagrid Silverlight

时间:2014-06-18 10:51:41

标签: c# .net silverlight datagrid

我正在使用一个使用DataGrid控件的Silverlight 5项目。 我想水平显示网格内的数据。我参考了here

我能够使用LayoutTransformer并且数据网格已经旋转。但是我面临一个小问题。

Issue: The Cell headers are vertically displayed.

enter image description here

我希望这些单元格标题水平显示。我尝试修改标题样式。能够旋转标题,但标题文本被剪裁,因为周围的矩形没有放大。

enter image description here

这是我写的XAML代码

 <Style x:Key="GridHeader" TargetType="ContentControl">
            <Setter Property="Background" >
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="White" Offset="0"/>
                        <GradientStop Color="Silver" Offset="1"/>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ContentControl">
                        <Border
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      CornerRadius="2">
                            <ContentControl
                          Content="{TemplateBinding Content}"
                          ContentTemplate="{TemplateBinding ContentTemplate}"
                          Cursor="{TemplateBinding Cursor}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          FontFamily="{TemplateBinding FontFamily}"
                          FontSize="{TemplateBinding FontSize}"
                          FontStretch="{TemplateBinding FontStretch}"
                          Foreground="{TemplateBinding Foreground}"
                          IsTabStop="{TemplateBinding IsTabStop}"
                          Margin="{TemplateBinding Padding}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RenderTransformOrigin="0.5,0.5" >
                                <ContentControl.RenderTransform>
                                    <CompositeTransform Rotation="90"/>
                                </ContentControl.RenderTransform>
                            </ContentControl>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

<!-- Code for 1 column. Similarly I have added more columns to the DataGrid-->

<sdk:DataGridTemplateColumn Header="IPTV12MISTarget" HeaderStyle="{StaticResource GridHeader}" >
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <toolkit:LayoutTransformer>
                                    <toolkit:LayoutTransformer.LayoutTransform>
                                        <RotateTransform Angle="90"/>
                                    </toolkit:LayoutTransformer.LayoutTransform>
                                    <TextBlock Text="{Binding IPTV12MISTarget}" Margin="5"></TextBlock>
                                </toolkit:LayoutTransformer>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                        <sdk:DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate>
                                <toolkit:LayoutTransformer>
                                    <toolkit:LayoutTransformer.LayoutTransform>
                                        <RotateTransform Angle="90"/>
                                    </toolkit:LayoutTransformer.LayoutTransform>
                                    <TextBox Text="{Binding IPTV12MISTarget, Mode=TwoWay}" Margin="5"></TextBox>
                                </toolkit:LayoutTransformer>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellEditingTemplate>
                    </sdk:DataGridTemplateColumn>

问题:如何扩展标题矩形以显示完整的标题内容?

1 个答案:

答案 0 :(得分:0)

不要使用RenderTransform,而是使用LayoutTransformer(包含在SL5中,是Silverlight5之前的工具包的一部分)。 那你现在在哪里:

<ContentControl ...>
    <ContentControl.RenderTransform> ...90...</ContentControl.RenderTransform>
</ContentControl>

<LayoutTransformer>
    <LayoutTransformer.LayoutTransform>
        <RotateTransform Angle="90"/>
    <LayoutTransformer.LayoutTransform>
    <ContentControl .../>
</LayoutTransformer>