我有这个 TabControl
<TabControl x:Name="tcProvince" Margin="2" ItemsSource="{Binding Path=WorkingEntity.Rates.CodeByProvinceCollection, Mode=OneWay}" SelectionChanged="tcProvince_SelectionChanged" >
<TabControl.ContentTemplate>
<DataTemplate>
<max:MaxGrid>
<max:MaxGrid.RowDefinitions>
</max:MaxGrid.RowDefinitions>
<max:MaxGrid.ColumnDefinitions>
</max:MaxGrid.ColumnDefinitions>
</max:MaxGrid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
然后在每个选项卡内部,我想创建一个像这样的动态网格:
+-------+-------+--------+-------+
| 2016 | 2017 | 2018 | 2019 |
+-------+-------+--------+-------+
| xxx | xxxx| xxxx | xxxxx |
+-------+-------+--------+-------+
year
和xxx
是客户输入的值。要添加年份,他必须单击一个按钮,然后xxx
是 TextBox 输入,他可以随时对其进行编辑。所以我不知道我会得到多少年和价值。
我的伪代码看起来有点像:
- 在 TabControlSelectionChange 上
如果 Grid 已经生成,直接显示即可。
否则:
- 获取 DataTemplate (或创建一个新的,并不重要)
- 根据集合生成列
- 在单元格中插入值
- 为
TextBox
- 将新网格推送到 TabItem
我有几乎所有的工具来做到这一点。我只是想出,如何将新网格设置为 TabItem 的内容,因为 TabItem 是我的集合内容的类型