2013-09-16 2 views
0

Как использовать поворотное преобразование в коде для поворота текста заголовка преобразования в DataGrid на Silverlight? У меня нет концепции, но когда я пытаюсь использовать этот код, он не работает.Silverlight DataGrid Header RotateTransform программно

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; 
    } 

Есть идеи?

+0

Вы хотите поместить текст вертикально ? – Sajeetharan

+0

Да, но я не знаю как. В xaml несколько примеров, как создавать, но как создавать в C# no; ( –

+0

Кто-нибудь, кто мне поможет? –

ответ

2

Хорошо здесь вы идете,

Добавьте этот сайт в свой пользовательский элемент управления,

<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; 
     } 
+0

Отметьте как ответ, если он вам помог! – Sajeetharan

Смежные вопросы