C# StackPanel保证金问题

C# StackPanel保证金问题,c#,wpf,combobox,C#,Wpf,Combobox,当我将文本框的边距从顶部设置为15时: x.Margin = new Thickness(100, 15, 0, 0); 这很好,一切正常,但我想让一个组合框从顶部出现15px,它不起作用 y.Margin = new Thickness(0, 15, 0, 0); 这是我单击按钮创建组合框和文本框的代码: int t = 0; private void btnAddTitle_Click(object sender, RoutedEventArgs e) { TextBox

当我将
文本框的
边距从顶部设置为
15
时:

x.Margin = new Thickness(100, 15, 0, 0);
这很好,一切正常,但我想让一个组合框从顶部出现
15px
,它不起作用

y.Margin = new Thickness(0, 15, 0, 0);
这是我单击按钮创建组合框和文本框的代码:

int t = 0;
private void btnAddTitle_Click(object sender, RoutedEventArgs e)
{
        TextBox x = new TextBox();
        x.Name = "Title" + t;
        x.Text = "Title...";
        x.FontWeight = FontWeights.Bold;
        x.FontStyle = FontStyles.Italic;
        x.TextWrapping = TextWrapping.Wrap;
        x.Height = 25;
        x.Width = 200;
        x.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        x.Margin = new Thickness(100, 15, 0, 0);
        spStandard.Children.Add(x);


        ComboBox y = new ComboBox();
        y.Name = "Combo" + t;
        y.Text = (t + 1).ToString();
        y.Height = 25;
        y.Width = 45;
        y.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        y.Margin = new Thickness(0, 15, 0, 0);
        spStandard.Children.Add(y);

        t++;
}
下面是我运行应用程序时发生的情况的图片-它显示了组合框的放置位置:


这里有一个解决问题的方法,您不应该在代码隐藏中创建控件,但它可以完成任务:

int t = 0;
private void btnAddTitle_Click(object sender, RoutedEventArgs e)
{
    //a new stackpanel is used to arrange items Horizontally for each line
    StackPanel sp = new StackPanel() { Orientation = Orientation.Horizontal };

    TextBox x = new TextBox();
    x.Name = "Title" + t;
    x.Text = "Title...";
    x.FontWeight = FontWeights.Bold;
    x.FontStyle = FontStyles.Italic;
    x.TextWrapping = TextWrapping.Wrap;
    x.Height = 25;
    x.Width = 200;
    x.Margin = new Thickness(0, 15, 0, 0);

    ComboBox y = new ComboBox();
    y.Name = "Combo" + t;
    y.Text = (t + 1).ToString();
    y.Height = 25;
    y.Width = 45;
    y.Margin = new Thickness(0, 15, 0, 0);

    sp.Children.Add(y);
    sp.Children.Add(x);        

    spStandard.Children.Add(sp);

    t++;
}

TextBox
也将“margin left”设置为100,期望的结果是什么?如果您使用
Vertical
StackPanel
它的所有子项都将垂直排列,不要期望它们在同一行上。读这个:那你为什么要把文本框的100个单位移到右边?移动ComboBox或者,您可以在stackpanel中水平堆叠每一对,并将这些stackpanel添加到主垂直stackpanel不要在WPF的过程代码中创建或操作UI元素。这就是XAML的用途。哎呀,我需要重复多少次呢?
{Orientation=Horizontal}位不存在。