WPF: удаление «себя» из родительского контейнера - PullRequest
6 голосов
/ 28 января 2010

В моем пользовательском элементе управления есть кнопка, которую следует использовать для удаления пользовательского элемента управления из его родительского контейнера. Вот как я это сегодня кодировал.

private void RemoveRoleButton_Click(object sender, RoutedEventArgs e)
{
    if (ConfirmRoleRemoval())
    {
        Panel parentPanel = (Panel)this.Parent;
        parentPanel.Children.Remove(this);
    }
}

private bool ConfirmRoleRemoval()
{
    return MessageBox.Show("Are you sure [...]
}

Это нормально делать это в WPF?

1 Ответ

6 голосов
/ 28 января 2010

Да, это выглядит хорошо для меня. Как Майк Хиллберг пишет в своем блоге :

Элемент фактически не выбирает своего логического родителя; вместо этого родитель «усыновляет» детей.

Таким образом, имеет смысл, что «удаление» потомка также осуществляется через объектную модель родителя.

В качестве примечания: вы можете рассмотреть возможность создания «приятного» исключения (или даже отключения кнопки), когда родительский элемент не является Panel (вместо ожидания InvalidCastException).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...