我有一個網格,我需要動態替換駐留在其中一個單元格中的控件。我不知道用語法來定位網格單元格,因爲我在哪裏放置了行和列號,以便刪除它中的任何內容。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. 如何刪除swt中的網格單元格的內容?
- 2. 如何捕獲Silverlight數據網格中的單元格內容?
- 3. 刪除DatagridView的單元格內容
- 4. 根據單元格內容刪除DataGridViewRow
- 5. 刪除單元格後刷新單元格內容
- 6. UICollectionView更新特定單元格的單元格內容
- 7. 刪除WPF DataGrid中的選定單元格內容
- 8. 刪除WPF DataGrid中選定單元格內容的框/邊框
- 9. 刪除數據網格中選定單元格的邊框
- 10. 刪除單元格不會清除單元格內的UITextField
- 11. Silverlight複製單元格內容
- 12. 使Silverlight DataGridCell內容填充單元格?
- 13. 基於特定單元格值刪除行的宏,然後刪除特定列單元格下的空行
- 14. 指定單元格而不刪除它的原始內容
- 15. 如何從HTML表格中刪除特定單元格?
- 16. 使用特定範圍從特定列中刪除單元格
- 17. 如何從單元格陣列中刪除特定的一組單元格?
- 18. 刪除單元格內容時刪除鍵被按下
- 19. 允許WPF網格單元格內容在網格單元格之外展開?
- 20. 如何刪除Excel單元格中的特定單詞?
- 21. 從給定特定條件的單元格中刪除行
- 22. 表格單元格內容
- 23. 刪除單元格中的字符串中的特定字符
- 24. 如何從單元格中刪除以前的內容
- 25. 在Excel中刪除VBA末尾的單元格內容
- 26. 刪除行單元格中的內容與環
- 27. 刪除列中的重複單元格內容
- 28. 如何使用VBA刪除Word中的單元格內容?
- 29. 刪除單元格中的空格
- 30. 刪除表格中的單元格,html
不錯 - LINQ再一次消除了對循環的需求。 – 2009-04-15 06:28:15