Отключить элемент меню, пока отображается ModalDialog, и включить, когда окно закрыто?

Я реализую приложение, и если я нажму на пункт меню:

 <MenuItem Name="menuAlgemeneGeg" Header="Algemene gegevens" Click="AlgemeneGegevensClick" />

метод:

private void AlgemeneGegevensClick(object sender, RoutedEventArgs e)
        {
            ToetsBeheerViewModel vm = (ToetsBeheerViewModel)this.DataContext;
            EditAlgemeneGegevens window = new EditAlgemeneGegevens(vm.Examination);
            window.ShowDialog();
            menuAlgemeneGeg.IsEnabled = false;

        }

Теперь я хочу, чтобы при нажатии на него пункт меню отключался. Но с того момента, как пользователь закроет это окно, его нужно снова включить. Я могу отключить пункт меню, но не могу изменить его, чтобы включить. Кто-нибудь, кто может мне помочь, пожалуйста?


person Ruben    schedule 15.07.2011    source источник
comment
в этом коде: ваше меню будет отключено только тогда, когда вы закроете окно EditAlgemeneGegevens, потому что строки после ShowDialog() будут выполняться после закрытия окна,   -  person Akrem    schedule 15.07.2011
comment
когда вы используете showdialog, вы не сможете работать в главном окне, почему вы отключили меню в главном окне !!   -  person Akrem    schedule 15.07.2011


Ответы (1)


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

private void AlgemeneGegevensClick(object sender, RoutedEventArgs e)
        {
            ToetsBeheerViewModel vm = (ToetsBeheerViewModel)this.DataContext;
            EditAlgemeneGegevens window = new EditAlgemeneGegevens(vm.Examination);
             window.Closed += new EventHandler(Window_Closed);
            window.ShowDialog();
            menuAlgemeneGeg.IsEnabled = false;

        }

 void Window_Closed(object sender, EventArgs e)
        {
             menuAlgemeneGeg.IsEnabled = true;
        }
person Bathineni    schedule 15.07.2011
comment
Window_Closed работает, когда главное окно закрыто, но если я понимаю его проблему, он хочет включить это меню, когда EditAlgemeneGegevens закрыт - person Akrem; 15.07.2011
comment
EditAlgemeneGegevens также является окном... потому что он может вызывать метод showdialog... поэтому он также может обрабатывать закрытое событие - person Bathineni; 15.07.2011
comment
если вы имеете в виду, что Window_Closed находится в EditAlgemeneGegevens, то это неверно, потому что menuAlgemeneGeg не является дочерним элементом этого окна !! - person Akrem; 15.07.2011
comment
Батинени прав. Вы можете без проблем прикрепить прослушиватель закрытых событий к окну EditAlgemeneGegevens внутри вашего родительского класса. Однако Акрем прав в том, что управление не вернется из ShowDialog(), пока окно не будет закрыто... поэтому вам нужно поставить menuAlgemeneGeg.IsEnabled = false перед вызовом ShowDialog(). В качестве альтернативы вы можете вместо этого вызвать window.Show() и не беспокоиться о том, что это диалог. - person devios1; 15.07.2011