以下作品在silverlight
中非常有效,
<Grid x:Name="ContentPanelInner" Grid.Row="1" Margin="12,0,12,0">
<StackPanel x:Name="stackPanelInner">
<Grid VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Content="Ok" Width="100"/>
<Button Grid.Column="1" Content="No" Width="100"/>
</Grid>
</StackPanel>
</Grid>
它只是在同一行中添加了两个按钮。 当我尝试从C#做同样的事情时,它无法工作。
这是我的c#代码:
Grid g1 = new Grid();
//StackPanel innerSP = new StackPanel();
ColumnDefinition cd1 = new ColumnDefinition();
ColumnDefinition cd2 = new ColumnDefinition();
g1.ColumnDefinitions.Add(cd1);
g1.ColumnDefinitions.Add(cd2);
panel1.Children.Add(g1);
Grid.SetColumn(buttonOk,0);
Grid.SetColumn(buttonNo, 1);
panel1.Children.Add(buttonOk);
panel1.Children.Add(buttonNo);
border.Child = panel1;
// Set the Child property of Popup to the border
// which contains a stackpanel, textblock and button.
p.Child = border;
有人可以告诉我出了什么问题吗?
答案 0 :(得分:2)
改变这个:
Grid.SetColumn(buttonOk,0);
Grid.SetColumn(buttonNo, 1);
到此:
buttonOk.SetValue(Grid.ColumnProperty, 0);
buttonNo.SetValue(Grid.ColumnProperty, 1);
如果按钮应该在Grid列中(看起来很有意义),那么你也应该改变它:
panel1.Children.Add(buttonOk);
panel1.Children.Add(buttonNo);
到此:
g1.Children.Add(buttonOk);
g1.Children.Add(buttonNo);