2011-09-23 32 views
1

下面这段工作得非常好于silverlight的Windows Phone 7,增加按键面板

<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

我在这里给出的例子: http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup%28v=vs.95%29.aspx 全部我想确定,取消同一行中的按钮。 – rplusg

回答

2

更改此:

Grid.SetColumn(buttonOk,0); 
Grid.SetColumn(buttonNo, 1);

这样:

buttonOk.SetValue(Grid.ColumnProperty, 0); 
buttonNo.SetValue(Grid.ColumnProperty, 1);

如果按钮都应该是在网格列(这似乎是有道理的),那么你也应该改变这种:

panel1.Children.Add(buttonOk); 
panel1.Children.Add(buttonNo);

这样:

g1.Children.Add(buttonOk); 
g1.Children.Add(buttonNo);
+1

我就这样工作,非常感谢你。我可以多给你一次吗? :) – rplusg

+0

第二部分是正确的,但'Grid.SetColumn'只是control.SetValue(Grid.ColumnProperty,value)的一个快捷方式,并且是完全有效的。只是因为他们被添加到面板而不是失败的网格。 –