我已经在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);
更新
看来我选择让我的所有专栏排列起来并且具有非常广泛的层次形式或允许“细胞”包裹与摆动/波浪列对齐。
起初,我换了工作正常,但柱子不完全一致,但现在,我已经添加了以下(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);
你可以提供截图来显示它们的不同之处吗? – 2012-02-16 18:07:37
你有自动生成列设置为true ..?如果这样设置为false也是这个spNufan.Children.Add(grd);看起来像昨天在这里的帖子..为.Children.Add()方法 – MethodMan 2012-02-16 18:11:09
你仔细检查了所有的边距和填充设置? – 2012-02-16 18:27:47