我正在尝试创建具有可变数量的行和列的表。我有这样做ItemsControl具有Grid作为ItemsPanel。而且我知道我可以通过它设置Grid.Row和设置Grid.Column每个项目ItemContainerStyle。但是当我无法通过网格名称访问网格时,我不知道如何更改行和列的数量及其大小。题:你如何修改RowDefinitions或ColumnDefinitions的Grid使用只在运行时XAML和结合与无代码隐藏?这是XAML代码:<ItemsControl Name="myItemsControl" ItemsSource="{Binding Cells}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Grid Name="myGrid"> <Grid.RowDefinitions> <!-- unknown number of rows are added here in run-time --> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <!-- known number of columns are added here in run-time --> </Grid.ColumnDefinitions> </Grid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemContainerStyle> <Style.../> </ItemsControl.ItemContainerStyle></ItemsControl>我试图RowDefinition在代码后面添加一些内容,但myGrid由于它位于内,因此找不到以其名称(或任何其他方式)访问的方法ItemsPanelTemplate。我想知道是否有任何方法可以在运行时以编程方式添加或修改RowDefinitions?
3 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
您可以将附加属性用于Grid修改,RowDefinitions以及ColumnDefinitions在设置或更改这些属性时使用。
它将允许您这样写Grid:
<Grid local:GridHelpers.RowCount="{Binding MaxGridRow}"
local:GridHelpers.ColumnCount="3" />
然后,仅公开您的属性,ViewModel该属性将返回Cells集合中最大的行号。
您可以在我的博客中找到这些属性的详细实现。
添加回答
举报
0/150
提交
取消