我在3个网格中有多个复选框和文本框,但无法清除。 错误是:
无法将类型为'System.Windows.Controls.TextBlock'的对象转换为 键入“ System.Windows.Controls.Control
是的,我也有多个文本块,但我不想清除它们。 我需要在userGrid中清除它们。
XAML结构:
<Windows>
<Grid x:Name="mainGrid">
<Grid x:Name="userGrid">
<Textbox/>
<Checkbox/>
<Textblock/>
...
</Grid>
<Grid x:Name="pcGrid">
<Textbox/>
<Checkbox/>
<Textblock/>
...
</Grid>
</Grid>
</Windows
代码:
foreach (Control c in _mainWindow.userGrid.Children)
{
if (c is TextBox && c != null) { ((TextBox)c).Text = string.Empty; }
}
foreach (Control c in _mainWindow.userGrid.Children)
{
if (c is CheckBox && c != null) { ((CheckBox)c).IsChecked = false; ((CheckBox)c).ClearValue(Control.ForegroundProperty); }
}
答案 0 :(得分:2)
如果您查看TextBlock类,则它不是从Control
类继承的,因此您的foreach
会中断,因为Children
列表包含{{1} }元素,并且不能将其强制转换为TextBlock
。
您可以使用Linq修复该问题:
Control