2

私はWPFの初心者です。私はMVVMパターンに従っています。メインウィンドウにアイテムのリストがあるリストボックスがあります。起動時に空のグリッドもあります。これがクエリです。リストボックスからアイテムを選択するときに、ツールボックスを使用するのではなく、ラベル、ボタン、チェックボックス、テキストボックスを動的に生成したいと思います。

メインウィンドウのリストボックスとグリッド:

<ListBox Name="ButtonPanel" ItemsSource="{Binding BoardTabs}" SelectedItem="{Binding SelectedTab, Mode=TwoWay}" >
        <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Button Margin="0,27,0,0" Content="{Binding TabName}" />
            </StackPanel>
        </DataTemplate>
        </ListBox.ItemTemplate>
</ListBox>

<Grid Height="461" HorizontalAlignment="Left" Margin="139,0,0,0" Name="grid1" VerticalAlignment="Top" Width="339" >

</Grid>

TabNameは、私のモデルクラスの一部である文字列です。

ViewModelクラス:

public List<Product> m_BoardTabs; 
public ProductViewModel()
{       
    m_BoardTabs = new List<Product>()
    {
        new Product() {TabName = "A"}, 
        new Product() {TabName = "B"},
        new Product() {TabName = "C"},               
    };
}                      

public List<Product> BoardTabs
{
    get
    {
        return m_BoardTabs;
    }

    set
    {
        m_BoardTabs = value;
    }
}

private Product m_SelectedItem;
public Product SelectedTab
{
    get
    {
        return m_SelectedItem;
    }

    set
    {
        m_SelectedItem = value;                
        NotifyPropertyChanged("SelectedTab");
    }
}    

デモンストレーション:

ListBoxには3つのアイテムがあります。A、B、C

Aを選択すると、グリッドでL1、L2、L3をスタック順に表示したいと思います。スタック順のB1、B2、B3、C1、C2、C3およびT1、T2、T3など。ここで、Lはラベル、Bはボタン、Tはテキストボックス、Cはチェックボックスです。

Bを選択すると、グリッドでL5、L6、L7をスタック順に表示したいと思います。スタック順のB5、B6、B7、C5、C6、C7およびT5、T6、T7など。ここで、Lはラベル、Bはボタン、Tはテキストボックス、Cはチェックボックスです。

Cの選択と同じです。ただし、ツールボックスを使用してアプリケーションでラベルを作成するのは簡単です。

リストボックスから選択したアイテムに基づいてグリッド内でそれらを生成する方法はありますか?

4

1 に答える 1

1

はい。

必要なものDataTemplatesは、目的のコントロールの構造を定義できる場合とDataTemplateSelector、実際のテンプレートを設定する場合で異なりますGrid

詳細はこちら

于 2012-10-04T12:11:45.893 に答える