WPF中文本框和复选框中的错误类型

时间:2019-01-08 08:21:27

标签: c# wpf

我在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); }
    }

1 个答案:

答案 0 :(得分:2)

如果您查看TextBlock类,则它不是从Control类继承的,因此您的foreach会中断,因为Children列表包含{{1} }元素,并且不能将其强制转换为TextBlock

您可以使用Linq修复该问题:

Control