我有一个类似于此的XAML的WPF网格:
<Grid width=200 Height=200 >
<Grid.ColumnDefinitions >
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" MinHeight="24" />
</Grid.RowDefinitions>
<TextBlock Text="Name" Grid.Row="0" Grid.Column="0"/>
<TextBox Grid.Row="0" Grid.Column="1" />
<TextBlock Text="Age" Grid.Row="1" Grid.Column="0"/>
<TextBox Grid.Row="1" Grid.Column="1" />
</Grid>
我需要在现有的2行数据之间添加一个新行,但我担心的是,当我添加一个新行时,我需要在行中出现的每个控件中手动更新Grid.Row附加属性在新添加的行下方。
有更聪明的方法吗?可能是相对于相邻的行/列设置行/列号?
干杯。
答案 0 :(得分:2)
您无法自动实现此目的。您必须根据需要为网格的每个子项手动调整Grid.Row的值:
foreach (UIElement child in grid.Children)
if (Grid.GetRow(child) >= indexOfNewRow)
Grid.SetRow(Grid.GetRow(child) + 1);
答案 1 :(得分:1)
Visual Studio 2010中通过设计时行和列操作功能解决了此问题。
不再需要手动更新行号和列号,因为Visual Studio会对此进行处理。
下面的演示很好地说明了这一点。
答案 2 :(得分:0)
我在Jason Rosenthal的MSDN Silverlight Forum找到了答案:
如果您将鼠标悬停在网格的左侧或顶部边缘,则会显示一个微小的下拉列表 将弹出选项移动到那里的箭头
答案 3 :(得分:0)
接受答案的链接现在指向Silverlight 5的常规页面。
你可以这样做是Visual Studio XAML设计师,我用下面的屏幕截图说明。这适用于WPF和Silverlight。
最好放大&#39;设计&#39;查看以便您可以更清楚地看到。
然后,将鼠标光标悬停在左侧边缘,您将获得带有水平橙色线的插入光标,指示该行将插入的位置:
之前的XAML:
插入后XAML:
请注意,插入点之后的所有Grid.Row数字都会自动递增。插入点处的行已自动拆分为两行,并且Grid.RowSpan已添加到插入点行中的项目。
在更复杂的布局中,自动插入可能会错误地添加或更改插入点下方的项目边距,因此请仔细观察。