Тип ошибки в текстовых полях и флажки в WPF - PullRequest
0 голосов
/ 08 января 2019

У меня есть несколько флажков и текстовых полей в 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 голосов
/ 08 января 2019

Если вы посмотрите на класс TextBlock , он не наследуется от класса Control, поэтому ваш foreach разрывается, потому что список Children содержит элементы TextBlock, и они не могут быть отлит как Control.

Вы можете использовать Linq, чтобы исправить это:

foreach(TextBox t in _mainWindow.userGrid.Children.OfType<TextBox>())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...