2011-01-18 11 views
0

真ん中にあるTableColumnの垂直方向の配置が可能ですか?TableColumn/Paragraph内のテキストを整列する

表の表のセルに段落を追加します。そしてこのテーブルをrichTexBoxコントロールに追加します。 問題は、中央の列が画像(顔文字)で構成されており、「縦の中心に合わせる」ことです。

私はそれを記述することは難しいです。

alt text

Iは中央の縦第一および第3の列を整列たい:ここ

画像です。

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

Iドン私はこの3列の表を作成するのと同じ「レベル:.

のFuncに、この3列内のテキストがここにありたいです「tはどのように垂直段落の整列

EDIT:

は、たぶん私は、段落に画像を追加する方法方法に問題があり、ここではコードです:

  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-propertyを設定します。

これは画像にも使用できます。このために使用するInlineUIContainer

+0

イメージを構成するInlineUiContainerでこのプロパティを設定しようとしましたが、それは役に立ちません。このプロパティは、ParagrapgまたはTableCellに設定できますか? 1と3の列にVerticalアライメントを設定する必要があります。 –

+0

インラインで設定する必要があります。共通テキストにはランインラインを使用します。次のようなパラグラフp =新しい段落(新規実行( "MyText"){BaselineAlignment = BaselineAlignment.Center})またはblockElement.Inlines.Add(新規実行( "MyText"){BaselineAlignment = BaselineAlignment.Center}); – HCL

+0

ありがとう、私はそれを試して、それは動作しません。たぶん私はパラグラフに画像を追加する方法の問題です。私は私の質問を編集しました。一番下はコードです。 –

関連する問題