我正在尝试在WPF表单中创建动态控件(Label和combobox),并相应地进行排列。这样做的最佳做法是什么,以及如何在窗口调整时调整窗口大小以适应控件?
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>
答案 0 :(得分: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">
可用选项描述为here。