переменная как тип c # WPF - PullRequest
0 голосов
/ 23 мая 2018

Я использую MVVM для своей формы WPF, и теперь я хочу закрыть новый диалог, который я создал, когда пользователь нажимает кнопку Отмена.Кнопка отмены является частью отдельного XAML, который используется для нескольких форм.(аналогично сценариям в javascript)

это то, что у меня есть до сих пор:

private void CloseDialogView(object sender)
    {
        var currentElement = (DependencyObject)sender;
        List<object> windowTypes = new List<object>() {
         typeof(fooDialogView), 
         typeof(barDialogView), 
         typeof(foobarDialogView) };
        Type elementType;

        do
        {
            var parent = VisualTreeHelper.GetParent(currentElement);
            currentElement = parent;
            elementType = (currentElement.GetType());
        }
        while (!windowTypes.Contains(elementType));

        foreach (var type in windowTypes)
            try
            {
                var Window = (type.GetType())currentElement;
                Window.Close();
            }
            catch
            { }
    }

в процессе, пока я просто прохожу все элементы в форме, пока не ударю по элементуэто окно.

В foreach я хочу проверить, является ли он одним из типов окон (Xaml-форм), и если это так, приведите этот тип к 'currentElement', а затем закройте его.

Это работает, если я просто делаю

var Window = (fooDialogView)currentElement;
Window.Close();

, но я хочу избежать необходимости вручную вводить каждое отдельное имя формы.

1 Ответ

0 голосов
/ 23 мая 2018

Кто-то отправил ответ

var Window = (Window)sender;
Window.Close();

, но оказалось, что все, что мне нужно, было

var Window = (Window)currentElement;
Window.Close();

сразу после того, как было выполнено какое-то время, никакой необходимости в цикле foreach.спасибо за быструю помощь:)

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