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

KMC*_*KMC 14 c# wpf xaml button

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

<Button>
   <StackPanel Orientation="Horizontal" Margin="10">
      <Image Source="foo.png"/>
   </StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)

小智 18

  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;
Run Code Online (Sandbox Code Playgroud)


Stu*_*art 14

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

作为一个更长的解释:

  • 按钮是一个"只有一个孩子"的控件 - 它Content.
  • 只有极少数控件(通常是"面板")可以包含零或更多的列表Children- 例如StackPanel,Grid,WrapPanel,Canvas等.

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