此问题已在此处有答案:
Add dynamic buttons in grid [duplicate](1个答案)
3天前关闭。
在xaml文件中,我创建了一个Grid和一个TextBox,如下所示:
<Grid Margin="6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBox x:Name="tB" IsReadOnly="True" TextWrapping="Wrap"
BorderThickness="2" Margin="0, 0, 0, 16"
Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="4"
Text="0" FontSize="36" TextAlignment="Right"
/>
</Grid>
字符串
现在,对于所有剩余的列和行,我想在它们内部创建一个单独的按钮。我不认为一遍又一遍地重复同一行代码,单独创建所有按钮是一个好主意。
我认为使用for循环在C#脚本中创建按钮可以工作,但我无法访问C#脚本中的Grid.Column
和Grid.Row
属性
我希望你能理解我在做什么,如果你能帮助我,我会非常感激,谢谢。
3条答案
按热度按时间9rnv2umw1#
字符串
使用此代码,将动态创建按钮,并将其添加到Grid中的每一行和每一列(第一行(TextBox所在的位置)除外)。按钮将在网格中正确设置其行和列位置。您可以自定义按钮属性以满足您的需要。
的数据
b5lpy0ml2#
为代码中的访问网格添加x:Name=“grid”。然后你可以用你的按钮填充它。
字符串
jjhzyzn03#
您无法访问
Grid.Row
和Grid.Column
,因为Grid
类中不存在这些属性。您要查找的是ColumnDefinitions
和RowDefinitions
属性。你首先要命名你的网格,这样你就可以在你的代码隐藏中访问它。
于是:
字符串
然后我们可以创建一个方法来实际填充网格,如下所示:
型
最后,不要忘记实际调用
AddButtons()
!型
您可能还注意到您的文本框不再显示。这是因为它被我们生成的按钮所覆盖。如果你想看到它,你需要修改你把TextBox放在哪一列和哪一行。