2012-02-16 15 views
1

私はxamlで1行のグリッドを作成してから、C#で動的に行を追加します。しかし、ALMOSTのラインアップはありますが、QUITEはそうしません。コードが同じときはどうしてでしょうか?xamlとC#は等価でなければなりません。

XAMLの最も適切な部分がある:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="4*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="3*" /> 
     <ColumnDefinition Width="2*" /> 
     <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 

のC#の最も適切な部分がある:

を更新しました

Grid grd = new Grid(); 
ColumnDefinition c0 = new ColumnDefinition(); 
c0.Width = new GridLength(1, GridUnitType.Star); 
ColumnDefinition c1 = new ColumnDefinition(); 
c1.Width = new GridLength(1, GridUnitType.Star); 
ColumnDefinition c2 = new ColumnDefinition(); 
c2.Width = new GridLength(1, GridUnitType.Star); 
ColumnDefinition c3 = new ColumnDefinition(); 
c3.Width = new GridLength(4, GridUnitType.Star); 
ColumnDefinition c4 = new ColumnDefinition(); 
c4.Width = new GridLength(1, GridUnitType.Star); 
ColumnDefinition c5 = new ColumnDefinition(); 
c5.Width = new GridLength(3, GridUnitType.Star); 
ColumnDefinition c6 = new ColumnDefinition(); 
c6.Width = new GridLength(2, GridUnitType.Star); 
ColumnDefinition c7 = new ColumnDefinition(); 
c7.Width = new GridLength(2, GridUnitType.Star); 
grd.ColumnDefinitions.Add(c0); 
grd.ColumnDefinitions.Add(c1); 
grd.ColumnDefinitions.Add(c2); 
grd.ColumnDefinitions.Add(c3); 
grd.ColumnDefinitions.Add(c4); 
grd.ColumnDefinitions.Add(c5); 
grd.ColumnDefinitions.Add(c6); 
grd.ColumnDefinitions.Add(c7); 
// Add it to the StackPanel 
spNufan.Children.Add(grd); 

Screenshot http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-02-16/EHnCudinikxcfprHxjywowEcwBssAcpbdchkeinAqJdhvuwDIhJxoonrjGEq/MisalignedColumns.bmp.scaled1000.jpg

私が持っているようですすべての列が並んでいて、本当に広いまたは「細胞」が波状/波状のカラムアライメントでラップすることを可能にする。

最初に私が正常に動作ラッピングを持っていましたが、列が正確に整列されませんでしたが、今私は私のXAMLに次の(SharedSizeGroup要素)を追加したこと:

<StackPanel x:Name="spNufan" Grid.IsSharedSizeScope="True" 
     Orientation="Vertical"> 
<Grid ShowGridLines="True" > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition SharedSizeGroup="ZeroethColumn" Width="*" /> 
     <ColumnDefinition SharedSizeGroup="FirstColumn" Width="*" /> 
     <ColumnDefinition SharedSizeGroup="SecondColumn" Width="*" /> 
     <ColumnDefinition SharedSizeGroup="ThirdColumn" Width="4*" /> 
     <ColumnDefinition SharedSizeGroup="FourthColumn" Width="*" /> 
     <ColumnDefinition SharedSizeGroup="FifthColumn" Width="3*" /> 
     <ColumnDefinition SharedSizeGroup="SixthColumn" Width="2*" /> 
     <ColumnDefinition SharedSizeGroup="SeventhColumn" Width="2*" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0" 
       Margin="2" 
       TextAlignment="Left" 
       TextWrapping="Wrap" 
       . . . 

...それなし私はTextWrappingここ

「ラップ」に設定されているものの長く、(細胞は、彼らが必要としてラップすることができます)んです私の適切なC#の:

Grid grd = new Grid(); 
grd.ShowGridLines = true; 
ColumnDefinition c0 = new ColumnDefinition(); 
c0.Width = new GridLength(1, GridUnitType.Star); 
c0.SharedSizeGroup = "ZeroethColumn"; 
. . . 
spNufan.Children.Add(grd); 
. . . 
TextBlock tbDateTime = new TextBlock(); 
tbDateTime.Margin = _margin; 
tbDateTime.Background = scb; 
tbDateTime.TextWrapping = TextWrapping.Wrap; 
tbDateTime.TextAlignment = TextAlignment.Left; 
tbDateTime.VerticalAlignment = VerticalAlignment.Center; 
tbDateTime.Text = ADateTime.ToString(); 
Grid.SetColumn(tbDateTime, LogParsePumpViewerConsts.GRID_COL_DATETIME); 
grd.Children.Add(tbDateTime); 

+3

視覚的にどのように異なるかを示すスクリーンショットを提供できますか? –

+0

自動生成列をtrueに設定していますか?もしそうであれば、このspNufan.Children.Add(grd);もfalseに設定します。 .Children.Add()メソッド – MethodMan

+0

のためにここに昨日ここの投稿のように見えますか?また、余白と埋め込みの設定を注意深くチェックしましたか? –

答えて

2

あなたは、オレンジ色のgrouで異なるコンテンツを持っていますpを赤色グループと比較して示す。テキストがオーバーフローすると、列のサイズがわずかに異なります。特に第1列の2012年2月12日は、2012年2月8日よりも大きいです。

+0

ああ、はい、各行の列は、それ自身の行に関連しているので意味があります。だから絶対幅を指定せずに最初の行と同じ幅を使うように各行を強制する方法はありますか? –

+0

はい、列はサイズを共有できます。詳しくはhttp://wpf.2000things.com/2011/11/07/424-getting-data-bound-items-in-a-listbox-to-be-a-consistent-size/をご覧ください。 –

+0

私はxamlとc0.SharedSizeGroup = "ZeroethColumn"の でSharedSizeGroupを設定しようとしました。 C#では、まだ歪んでいます - いくつかの列はピサの斜塔に似ています。 –

関連する問題