gpt4 book ai didi

c# - 如何在 WPF 应用程序中动态生成标签、按钮、复选框和文本框

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:31 26 4
gpt4 key购买 nike

我是 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 ​​相同。虽然在工具箱的帮助下在应用程序中创建标签很容易。

有没有一种方法可以根据从列表框中选择的项目在网格内生成它们?

最佳答案

是的。

您需要的是不同的 DataTemplates 用于每种情况,您可以在其中定义所需控件的结构和 DataTemplateSelector 来为您的 Grid 设置实际模板

查找更多 here

关于c# - 如何在 WPF 应用程序中动态生成标签、按钮、复选框和文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12726178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com