Я использую 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();
, но я хочу избежать необходимости вручную вводить каждое отдельное имя формы.