Здравствуйте, Glas, Вы писали:
G>Пробовал через Dispatcher, Exception не выходит, но и окна тоже нет
Непонятно тогда в чем проблема. Попробуйте может быть Owner убрать, может быть со стилями/шаблонами проблема, окно их не находит. Вот набросал примерчик, посмотрите в чем у вас отличие. Проект скачать можно здесь.
Здравствуйте, Fortnum, Вы писали:
F>Непонятно тогда в чем проблема. Попробуйте может быть Owner убрать, может быть со стилями/шаблонами проблема, окно их не находит. Вот набросал примерчик, посмотрите в чем у вас отличие. Проект скачать можно здесь.
Отличие в том, что используется Prism.
Re[5]: [WPF] Prism Как из ViewModel показать диалоговое окно
Здравствуйте, Glas, Вы писали:
F>>Непонятно тогда в чем проблема. Попробуйте может быть Owner убрать, может быть со стилями/шаблонами проблема, окно их не находит. Вот набросал примерчик, посмотрите в чем у вас отличие. Проект скачать можно здесь. G>Отличие в том, что используется Prism.
Вряд ли Prism к невидимому окну какое-то отношение имеет. Разве что [Dependency] в code-behind на атрибутах стоят, но это надо видеть, играют они какую-нибудь роль или нет. У этого Dialog есть модель вида? Попробуйте ее не присоединять, будет окно видно в этом случае? Я имею в виду, что может еще с биндингом каких-нибудь свойств быть нестыковочка, окно уезжает куда-нибудь например.
Re[6]: [WPF] Prism Как из ViewModel показать диалоговое окно
Здравствуйте, Fortnum, Вы писали:
F>Вряд ли Prism к невидимому окну какое-то отношение имеет. Разве что [Dependency] в code-behind на атрибутах стоят, но это надо видеть, играют они какую-нибудь роль или нет. У этого Dialog есть модель вида? Попробуйте ее не присоединять, будет окно видно в этом случае? Я имею в виду, что может еще с биндингом каких-нибудь свойств быть нестыковочка, окно уезжает куда-нибудь например.
Я же говорю после BeginInvoke даже конструктор не вызывается.
Re[7]: [WPF] Prism Как из ViewModel показать диалоговое окно
Здравствуйте, Glas, Вы писали:
G>Я же говорю после BeginInvoke даже конструктор не вызывается.
Блин, а сказали окна нет Я почему-то подумал, что окно создается, но не появляется — у меня были такие проблемы Если через BeginInvoke получаете тот же Exception про STA thread, значит Dispatcher = Dispatcher.CurrentDispatcher сохраняете не в UI-потоке, а в рабочем! 100%.
Re[8]: [WPF] Prism Как из ViewModel показать диалоговое окно
Здравствуйте, Fortnum, Вы писали:
F>Здравствуйте, Glas, Вы писали:
G>>Я же говорю после BeginInvoke даже конструктор не вызывается.
F>Блин, а сказали окна нет Я почему-то подумал, что окно создается, но не появляется — у меня были такие проблемы Если через BeginInvoke получаете тот же Exception про STA thread, значит Dispatcher = Dispatcher.CurrentDispatcher сохраняете не в UI-потоке, а в рабочем! 100%.
Через BeginInvoke вообще ничего не происходит
Re[9]: [WPF] Prism Как из ViewModel показать диалоговое окно
Здравствуйте, Glas, Вы писали:
G>Через BeginInvoke вообще ничего не происходит
Ну тогда точно BeginInvoke не у того Dispatcher'а вызываете. Dispatcher.CurrentDispatcher возвращает не NULL в любом потоке — и в рабочем и в UI, т.е. NULL-exception не возникнет в любом случае. В рабочем потоке только очередь не прокачивается и ваш вызов никогда не будет обработан, что видимо и происходит. Проверьте отладчиком в Watch методом Dispatcher.CurrentDispatcher.GetHashCode() в двух местах: (1) в конструкторе вида и (2) в месте, где вы сохраняете Dispatcher = Dispatcher.CurrentDispatcher — уверен, что хэш-коды у них будут разные.
Re[10]: [WPF] Prism Как из ViewModel показать диалоговое окн
Здравствуйте, Fortnum, Вы писали:
F>Здравствуйте, Glas, Вы писали:
G>>Через BeginInvoke вообще ничего не происходит
F>Ну тогда точно BeginInvoke не у того Dispatcher'а вызываете. Dispatcher.CurrentDispatcher возвращает не NULL в любом потоке — и в рабочем и в UI, т.е. NULL-exception не возникнет в любом случае. В рабочем потоке только очередь не прокачивается и ваш вызов никогда не будет обработан, что видимо и происходит. Проверьте отладчиком в Watch методом Dispatcher.CurrentDispatcher.GetHashCode() в двух местах: (1) в конструкторе вида и (2) в месте, где вы сохраняете Dispatcher = Dispatcher.CurrentDispatcher — уверен, что хэш-коды у них будут разные.
да! Спасибо за идею Передал Dispatcher из Shell в модули и окошко появилось.