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 に答える