2012-02-16 65 views
1

我已经在xaml中创建了一行网格,然后在C#中动态添加行。然而,虽然他们几乎排队,但他们并不这样做。为什么会这样,当代码是一样的?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

更新

看来我选择让我的所有专栏排列起来并且具有非常广泛的层次形式或允许“细胞”包裹与摆动/波浪列对齐。

起初,我换了工作正常,但柱子不完全一致,但现在,我已经添加了以下(SharedSizeGroup元素)到我的XAML:

<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

你可以提供截图来显示它们的不同之处吗? – 2012-02-16 18:07:37

+0

你有自动生成列设置为true ..?如果这样设置为false也是这个spNufan.Children.Add(grd);看起来像昨天在这里的帖子..为.Children.Add()方法 – MethodMan 2012-02-16 18:11:09

+0

你仔细检查了所有的边距和填充设置? – 2012-02-16 18:27:47

回答

2

你有橙色GROU不同的内容与红组相比。文本溢出会使列大小略有不同。最值得注意的是,2012年12月2日的第一列比2012年2月8日大。

+0

啊,是的,每一行的列都是相对于它自己的行,所以这是有道理的。所以......有没有办法强制每行使用与第一个宽度相同的宽度而不指定绝对宽度? – 2012-02-16 19:52:17

+0

是的,列可以共享一个大小。细读http://wpf.2000things.com/2011/11/07/424-getting-data-bound-items-in-a-listbox-to-be-a-consistent-size/。 – 2012-02-16 19:54:32

+0

我尝试通过xaml和c0.SharedSizeGroup =“ZeroethColumn”中的 设置SharedSizeGroup;在C#中,但它仍然是倾斜的 - 一些列与比萨斜塔有惊人的相似之处。 – 2012-02-16 20:23:25

相关问题