1

我正在尝试以 WPF 表单创建动态控件(标签和组合框),并相应地安排它们。这样做的最佳做法是什么,以及如何调整窗口大小以适应控件的增长?

public MainWindow()
    {
        MyEntities db = new MyEntities();
        InitializeComponent();
        var ID = db.Courses.Where(f => f.CourseId!=null).ToList();
        foreach (var c in ID) 
        {
            ComboBox c = new ComboBox();                
            this.stackpanel.Children.Add(c);
        }
    }            

XAML

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

    <StackPanel Name= "stackpanel"/>     
</Window>
4

1 回答 1

3

您可以声明 ItemsControl 并提供项目模板:

 <ItemsControl ItemsSource="{Binding Collection}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" />
                 <ComboBox ... />
                </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

正如 Batuu 建议的那样,您可以使用 ListView 等其他控件来获得额外的行为。

对于随控件列表一起增长的窗口,您可以使用 LPL 在评论中建议的 Window.SizeToContent 属性。

<Window x:Class="WpfApplication2.MainWindow"
    ...
    SizeToContent="Height">

此处描述了可用的选项。

于 2012-07-09T10:44:43.743 回答