如何在C#代码后面的Button中添加StackPanel

如何使用c#代码在Button中添加StackPanel (即将以下XAML转换为C#)? 没有Button.Children.Add ……

  

设置Button.Content而不是使用Button.Children.Add

作为一个更长的解释:

  • Button是一个“只有一个孩子”的控件 – 其Content
  • 只有极少数控件(通常是“面板”)可以包含零个或多个子项的列表 – 例如StackPanel,Grid,WrapPanel,Canvas等。

正如您的代码已经显示的那样,您可以将Button的Content设置为Panel – 这将允许您随后添加多个子控件。 但是,实际上在您的示例中,则不需要StackPanel和Image。 看起来你的StackPanel只是添加了Padding – 如果你愿意,你可以将Padding添加到Image而不是StackPanel。

  Image img = new Image(); img.Source = new BitmapImage(new Uri("foo.png")); StackPanel stackPnl = new StackPanel(); stackPnl.Orientation = Orientation.Horizontal; stackPnl.Margin = new Thickness(10); stackPnl.Children.Add(img); Button btn = new Button(); btn.Content = stackPnl; 

像这样使用

  index.jpg   

在Codebehind中

 Button btn = new Button(); btn.HorizontalContentAlignment = HorizontalAlignment.Stretch; btn.VerticalContentAlignment = VerticalAlignment.Stretch; StackPanel stk = new StackPanel(); stk.Orientation = Orientation.Horizontal; stk.Margin = new Thickness(10, 10, 10, 10); stk.SetResourceReference(StackPanel.BackgroundProperty, "LeftMenuBackgroundImageBrush"); btn.Content = stk;