我有一个网格,我需要动态替换驻留在其中一个单元格中的控件。我不知道用语法来定位网格单元格,因为我在哪里放置了行和列号,以便删除它中的任何内容。Silverlight:删除网格中特定单元格的内容
4
A
回答
10
如果你知道的单元格和行,控制生活,你可以使用LINQ声明来抓住它。
这里有一个LINQ语句,将得到的第一个控制是第3列,第4行
var control = (from d in grid.Children
where Grid.GetColumn(d as FrameworkElement) == 3
&& Grid.GetRow(d as FrameworkElement) == 4
select d).FirstOrDefault();
1
您可以使用Grid.GetRow和Grid.GetColumn方法迭代网格的子节点检查其行和列值,并在值匹配时替换目标内容。下面是WPF测试了样品,但应在Silverlight中工作:
<Grid x:Name="SampleGrid">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="Red" Width="20" Height="20" Grid.Row="0" Grid.Column="0" />
<Rectangle Fill="Orange" Width="20" Height="20" Grid.Row="0" Grid.Column="1" />
<Rectangle Fill="Yellow" Width="20" Height="20" Grid.Row="0" Grid.Column="2" />
<Rectangle Fill="Green" Width="20" Height="20" Grid.Row="1" Grid.Column="0" />
<Rectangle Fill="Blue" Width="20" Height="20" Grid.Row="1" Grid.Column="1" />
<Rectangle Fill="Indigo" Width="20" Height="20" Grid.Row="1" Grid.Column="2" />
<Rectangle Fill="Violet" Width="20" Height="20" Grid.Row="2" Grid.Column="0" />
<Rectangle Fill="Black" Width="20" Height="20" Grid.Row="2" Grid.Column="1" />
<Rectangle Fill="Gray" Width="20" Height="20" Grid.Row="2" Grid.Column="2" />
<Button Grid.Row="3" Grid.ColumnSpan="3" Margin="10" x:Name="Swap" Click="Swap_Click" Content="Swap"/>
</Grid>
在事件处理程序:
private void Swap_Click(object sender, RoutedEventArgs e)
{
Ellipse newEllipse = new Ellipse() { Fill = new SolidColorBrush(Colors.PaleGoldenrod), Width = 20d, Height = 20d };
for (int childIndex = 0; childIndex < this.SampleGrid.Children.Count; childIndex++)
{
UIElement child = this.SampleGrid.Children[childIndex];
if (Grid.GetColumn(child) == 2 && Grid.GetRow(child) == 2)
{
this.SampleGrid.Children.Remove(child);
Grid.SetRow(newEllipse, 2);
Grid.SetColumn(newEllipse, 2);
this.SampleGrid.Children.Add(newEllipse);
}
}
}
+0
应该补充,如果你有大量的或行/ COLS你可能要添加一个break语句,以避免迭代剩下的孩子一旦你击中了你的目标。 – 2009-04-14 15:12:46
0
你还记得去控制,我把在网格中添加一个私有变量:
private Control controlCentral = null;
接下来,为此变量添加添加到网格的控件,以便您可以使用删除删除网格的控件。
下面的代码替换行0柱1的控制:
private void MostrarControlCentral(Control control)
{
if (control != null)
{
control.SetValue(Grid.RowProperty, 0);
control.SetValue(Grid.ColumnProperty, 1);
}
this.LayoutRoot.Children.Remove(this.controlCentral);
if (control != null)
{
this.LayoutRoot.Children.Add(control);
}
this.controlCentral=control;
}
相关问题
- 1. 如何捕获Silverlight数据网格中的单元格内容?
- 2. 删除单元格后刷新单元格内容
- 3. 删除数据网格中选定单元格的边框
- 4. 基于特定单元格值删除行的宏,然后删除特定列单元格下的空行
- 5. 指定单元格而不删除它的原始内容
- 6. 使Silverlight DataGridCell内容填充单元格?
- 7. 如何从HTML表格中删除特定单元格?
- 8. 删除单元格内容时删除键被按下
- 9. 允许WPF网格单元格内容在网格单元格之外展开?
- 10. 如何删除Excel单元格中的特定单词?
- 11. 表格单元格内容
- 12. 删除单元格中的字符串中的特定字符
- 13. 删除行单元格中的内容与环
- 14. 在Excel中删除VBA末尾的单元格内容
- 15. 如何使用VBA删除Word中的单元格内容?
- 16. 删除单元格中的空格
- 17. 清除网格单元格
- 18. Google表格脚本 - 删除表格中的选定单元格
- 19. 当前单元格被更改时清除单元格内容
- 20. 如何将数据网格中的单元格内容居中?
- 21. 如何替换SWT GridLayout中的网格单元格的内容?
- 22. 如何从CSV文件中删除特定值的单元格
- 23. 添加/删除单元格中包含数据的网格线
- 24. 在html中删除表格单元格
- 25. 将网格中的单元格内容对齐gwt
- 26. 在DevExpress网格中显示提示的单元格内容
- 27. 根据Google表格中同一单元格的内容将当前单元格内容解析为网址
- 28. 清除数据绑定datagridview中的单元格内容
- 29. 删除特定字符或空格之前的所有内容?
- 30. 单元格内容删除后保存DataGridView的最佳做法
不错 - LINQ再一次消除了对循环的需求。 – 2009-04-15 06:28:15