xaml中的Stackpanel:
<StackPanel HorizontalAlignment="Right" Width="150" Height="280" Name="MyPanel">
<TextBox HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="97"/>
</StackPanel>
然后我将一些孩子添加到该stackpanel,例如:
MyPanel.Children.Add(new Rectangle { Fill = new SolidColorBrush(Colors.Chartreuse) }, Width=15, Height=15);
我也从代码隐藏中调用UpdateLayout
:
MyPanel.UpdateLayout();
但是布局保持不变,只有一个文本框。我也尝试过事先清理孩子,但这也不行。
答案 0 :(得分:0)
<Window x:Class="Demo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="650" Width="500"
xmlns:local="clr-namespace:Demo">
<Grid>
<StackPanel Name="MyPanel" />
</Grid>
</Window>
MainWindow.cs
namespace Demo
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
for (var i = 0; i < 5; i++)
{
MyPanel.Children.Add(new Rectangle
{
Width = 100,
Height = 20,
StrokeThickness = 1,
Stroke = new SolidColorBrush(Colors.Black),
Margin = new Thickness(5)
});
}
}
}
}
答案 1 :(得分:0)
我会回避代码隐藏逻辑。
如果您在XAML中创建了一个矩形作为DataTemplate,然后依赖面板的ItemsSource属性而不是附加矩形,该怎么办?
通过DataBinding,您的datatemplate将自动为您映射。