如何在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;