我是WPF的新手。我正在关注MVVM模式。我的主窗口中有列表框,其中包含项目列表。我还有一个在启动时为空的网格。现在这里是查询,从列表框中选择项目,我想动态生成标签,按钮,复选框和文本框,而不是使用工具箱。
ListBox& MainWindow中的网格:
<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相同。虽然在工具箱的帮助下很容易在应用程序中创建标签。
有没有办法可以根据Listbox中的选定项目在网格内生成它们?
答案 0 :(得分:1)