【问题标题】:Silverlight DataGrid Header RotateTransform programmaticallySilverlight DataGrid 标题 RotateTransform 以编程方式
【发布时间】:2013-09-16 18:31:16
【问题描述】:

如何在 Silverlight 上的 DataGrid 中使用后面的代码中的旋转变换来旋转变换标题文本? 我没有概念,但是当我尝试使用此代码时,它不起作用。

    private DataGridTemplateColumn CreateColumn(int index, string header)
    {
        string cellTemp = string.Format(@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" 
            xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
             <CheckBox />
        </DataTemplate>", index);

        DataGridTemplateColumn column = new DataGridTemplateColumn();
        column.Header = header;
        column.CellTemplate = (DataTemplate)XamlReader.Load(cellTemp);

        TransformGroup traGrp = new TransformGroup(){};
        traGrp.Children.Add(new RotateTransform(){ Angle = -35});

        Style transofrm = new Style(typeof(DataGridTemplateColumn));
        transofrm.Setters.Add(new Setter(TextBlock.RenderTransformProperty, traGrp));
        column.HeaderStyle = transofrm;

        return column;
    }

有什么想法吗?

【问题讨论】:

  • 你想垂直放置文本吗?
  • 是的,但我不知道怎么做。在 xaml 中很少有如何创建的例子,但是如何在 C# 中创建没有;(
  • 有人帮我吗?

标签: c# silverlight datagrid rotation transform


【解决方案1】:

好的,你去,

将此资源添加到您的用户控件,

<UserControl.Resources>
        <Style TargetType="sdk:DataGridColumnHeader">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="sdk:DataGridColumnHeader">
                        <Canvas x:Name="RootElement" Height="60" HorizontalAlignment="Stretch">
                            <ContentPresenter Canvas.Left="15" Canvas.Top="50" Content="{TemplateBinding Content}">
                                <ContentPresenter.RenderTransform>
                                    <RotateTransform Angle="-90"/>
                                </ContentPresenter.RenderTransform>
                            </ContentPresenter>
                        </Canvas>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

并且在 codebehind.cs 中这样做,

private DataGridTemplateColumn CreateColumn(int index, string header)
        {
            string cellTemp = string.Format(@"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" 
            xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
             <CheckBox />
             </DataTemplate>", index);
            DataGridTemplateColumn column = new DataGridTemplateColumn();
            column.Header = header;
            column.HeaderStyle = Resources["Template"] as Style;
            column.CellTemplate = (DataTemplate)XamlReader.Load(cellTemp);


            return column;
        }

【讨论】:

  • 如果对您有帮助,请标记为答案!
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
相关资源
最近更新 更多