2011-01-18 4 views
0

가운데의 TableColumn에서 세로 정렬 텍스트가 가능합니까?TableColumn/단락의 텍스트 정렬

표의 표 셀에 단락을 추가합니다. 그리고이 테이블을 richTexBox 컨트롤에 추가합니다. 중간 열은 이미지 (이모티콘)로 구성되며 "수직 중심에 정렬"되어있는 것이 문제입니다.

설명하기가 어렵습니다.

alt text

I가 중간 수직 첫 번째 및 세 번째 열의 정렬하고자 : 여기

은 이미지이다.

public Table ConvertToTabRp(IRp rp, string avatarNick) 
    { 
     var tempRp = new Rp { RpText = rp.RpText, Nick = rp.Nick, Time = rp.Time, Your = rp.Your }; 

     if (tempRp.Your) 
      tempRp.Nick = avatarNick; 

     string time = string.Format(CultureInfo.CurrentCulture, "{0}", DateTime.ParseExact(tempRp.Time, "yyyy-MM-dd HH:mm:ss", null) 
      .ToString("dd-MM-yyyy HH:mm:ss").Replace("-", ".")); 

     var tab = new Table {Margin = new Thickness(0, 0, 0, 0)}; 

     var gridLenghtConvertor = new GridLengthConverter(); 

     //1. col 
     tab.Columns.Add(new TableColumn { Name = "colNick", Width = (GridLength)gridLenghtConvertor.ConvertFromString("100") }); 
     //2.col 
     tab.Columns.Add(new TableColumn { Name = "colMsg", Width = (GridLength)gridLenghtConvertor.ConvertFromString("Auto") }); 
     //3.col 
     tab.Columns.Add(new TableColumn { Name = "colDt", Width = (GridLength)gridLenghtConvertor.ConvertFromString("150") }); 

     tab.RowGroups.Add(new TableRowGroup()); 
     tab.RowGroups[0].Rows.Add(new TableRow()); 

     var tabRow = tab.RowGroups[0].Rows[0]; 

     //1.col - NICK 
     var pNick = new Paragraph(new LineBreak()) { TextAlignment = TextAlignment.Left }; 
     pNick.Inlines.Add(new Run(tempRp.Nick)); 

     if (!tempRp.Your) 
     { 
      pNick.Foreground = Brushes.DodgerBlue; 
     } 
     tabRow.Cells.Add(new TableCell(pNick)); 

     //2.col - MESSAGE 
     tabRow.Cells.Add(new TableCell(ConvertToRpWithEmoticons(tempRp.RpText)) { TextAlignment = TextAlignment.Left}); 

     //3.col - DATE TIME 
     var pTime = new Paragraph(new LineBreak()) { TextAlignment = TextAlignment.Right }; 
     pTime.Inlines.Add(time); 
     tabRow.Cells.Add(new TableCell(pTime)); 

     return tab; 

    } 

어쩌면 솔루션은 다음과 같습니다 :

 var pNick = new Paragraph(new LineBreak()) { TextAlignment = TextAlignment.Left , **VerticalTextAligment = Center** }; 

나는 돈 나는이 3 열이있는 테이블을 만들 때와 같은 "수준 :.

Func을에이 3 열에서 텍스트가 여기에 원하는 단락의 't 방법 수직 정렬

편집 :.

,

아마 여기, 내가 단락에 이미지를 추가하는 방법을 방법으로 문제는 코드입니다

  var image = new Image 
      { 
       Source = new BitmapImage(new Uri(path, UriKind.RelativeOrAbsolute)), 
       Width = 20, 
       Height = 20, 
      }; 
      para.Inlines.Add(new Run(separatemsg.Text) { BaselineAlignment = BaselineAlignment.TextBottom }); 
      //insert smile 
      para.Inlines.Add(new InlineUIContainer(image) {BaselineAlignment = BaselineAlignment.Bottom}); 

이 단락은 2 열을 추가합니다.

답변

0

BaselineAlignment 속성을 사용해보세요.
Run -Inline을 사용하여 텍스트를 단락에 넣고 BaselineAlignment 속성을 설정하십시오.

이미지에도 사용할 수 있습니다. InlineUIContainer의 BaselineAlignment 속성을 사용하십시오.

+0

이미지를 구성하는 InlineUiContainer에서이 속성을 설정하려고 시도하지만 도움이되지 않습니다. 이 속성은 Paragrapg 또는 TableCell로 설정할 수 있습니까? 나는 1.과 3. 란에 세로 정렬을 설정해야합니다. –

+0

인라인으로 설정해야합니다. 일반 텍스트에는 Run-Inline을 사용하십시오. 다음과 같은 단락 p = 새로운 단락 (새 Run ("MyText") {BaselineAlignment = BaselineAlignment.Center}) 또는 blockElement.Inlines.Add (새 Run ("MyText") {BaselineAlignment = BaselineAlignment.Center}); – HCL

+0

고마워, 해보지 만 작동하지 않습니다. 단락에 이미지를 추가하는 방법에 문제가있을 수 있습니다. 나는 나의 질문을 편집했다. 하단에는 코드가 있습니다. –