WPF MVVM: закрытие вторичного окна из другого потока, который был создан [дубликат]

  1. Трюк Felix добавления полей для фланца классаName и строки, которую вы ищете, - это правильный подход к определению того, имеют ли элементы класс или нет.
  2. Чтобы иметь другое поведение в соответствии с к классу вы можете использовать ссылки или функции функций в пределах карты:
    function fn1(element){ /* code for element with class1 */ }
    
    function fn2(element){ /* code for element with class2 */ }
    
    function fn2(element){ /* code for element with class3 */ }
    
    var fns={'class1': fn1, 'class2': fn2, 'class3': fn3};
    
    for(var i in fns) {
        if(hasClass(test, i)) {
            fns[i](test);
        }
    }
    
    для (var i in fns) выполняет итерацию через ключи в пределах карты fns. Без прерывания после того, как fnsi позволяет выполнять код всякий раз, когда есть совпадение, так что если у элемента есть, f.i., class1 и class2, будут выполняться как fn1, так и fn2. Преимущество этого подхода заключается в том, что код для выполнения для каждого класса является произвольным, как тот, который содержится в инструкции switch; в вашем примере все случаи выполняли аналогичную операцию, но завтра вам может понадобиться делать разные вещи для каждого. Вы можете моделировать случай по умолчанию, указав переменную статуса, указывающую, было ли совпадение найдено в цикле или нет.
2
задан user913359 27 June 2012 в 06:55
поделиться

3 ответа

Вы не можете повторно использовать окно.

Если вы закрываете окно с помощью чего-то другого, кроме OK и кнопок «Отмена», вам необходимо обработать событие Window.Closing (см. ссылку для примера).

2
ответ дан Botz3000 26 August 2018 в 23:13
поделиться

Вы не можете. Просто создайте новое окно.

0
ответ дан durron597 26 August 2018 в 23:13
поделиться
ConfigDialogBox configDlg = null;



private void Config(object sender, RoutedEventArgs e)
        {            
         configDlg = new ConfigDialogBox();
            configDlg.Show();
            configDlg.okButton.Click+=new RoutedEventHandler(SettingsChanged);
            configDlg.cancelButton.Click+=new RoutedEventHandler(SettingsChanged);
        }
0
ответ дан JohnnBlade 26 August 2018 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: