|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Я с очередным "детским" вопросом. Столкнулся с такой потребностью. Два окна. Из первого несколько раз вызывается второе в модальном режиме. После завершения работы второго управление возвращается в первое. Всё бы ничего, но во втором значительное количество контролов, состояние которых между между вызовами желательно сохранять. Понятно, что это можно сделать через сохранение данных в коде. Но гораздо проще было бы скрыть второе, чтобы вернулось управление в первое окно. Но в модальном режиме, скрыть окно нельзя. Какой наиболее простой и правильный способ для решения этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 21:57 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Если используется MVVM, то проблем нет, модель-то можно не убивать. Или речь идет о сохранении состояния скроллеров и тому подобное? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 21:59 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProЕсли используется MVVM, то проблем нет, модель-то можно не убивать. Или речь идет о сохранении состояния скроллеров и тому подобное? Да, состояния элементов окна. Данные понятно в модели и модели представления сохраняются. Просто не хотелось сохранять состояние каждого контрола. Вот и думаю об обходных путях. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:14 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Лично я никогда не делал несколько окон в WPF-приложениях. Либо вкладки, как в браузере, либо выводится некое диалоговое псевдоокно поверх всего содержимого основного окна - фактически прямоугольник с границами, а поля вокруг него затеняются полупрозрачностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:17 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProЛично я никогда не делал несколько окон в WPF-приложениях. Либо вкладки, как в браузере, либо выводится некое диалоговое псевдоокно поверх всего содержимого основного окна - фактически прямоугольник с границами, а поля вокруг него затеняются полупрозрачностью.Мне просто при работе второго окна нужно сохранять видимость первого. Информация из него упрощает работу во втором. Но изменять эту информацию пока открыто второе нельзя - возможны коллизии. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:26 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspНо изменять эту информацию пока открыто второе нельзя - возможны коллизии.так заблокируй редактирование Window.IsEnabled=false. Либо можно поиграться с Focusable, если принципиально, чтобы не изменялся внешний вид ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:30 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.Pro...... так заблокируй редактирование Window.IsEnabled=false. Либо можно поиграться с Focusable, если принципиально, чтобы не изменялся внешний видТо есть вызывать второе обычным Show, а перед его скрытием разблокировать первое. Да, вариант. Только надо продумать как в первом узнать, что второе скрылось. При использовании ShowDialogs необходимость в этом не было. Подумаю.... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:41 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Роман где-то выкладывал свой менеджер окон. Попробуй поискать среди его постов в WPF ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:51 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
создайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:52 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Roman Mejtesсоздайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться.А где он будет жить между сеансами? Просто в переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 22:57 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProRoman Mejtesсоздайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться.А где он будет жить между сеансами? Просто в переменной?........? Создать в коде и потом просто добавлять в окно.... Или, наоборот. В коде просто сохранить ссылку на него. При закрытии окна элемент не закроется? А при новом открытии присвоить элементу значение из ссылки. Такое, что - сработает? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 23:05 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.Pro, ну трудно сказать. где ему жить, зависит от ситуации. Точно такая же фигня есть в TabControl'е, так как вкладки в нём являются по сути не элементами управления, а шаблонами. Когда его переделывал, такие элементы управления генерировались внутри него и ссылки хранились на объект. Таким образом переключался уже не шаблон, а элементы управления с заданными шаблонами. Любой объект, можно сохранить в ресурсах, типа такого: Как видно из примера, CheckBox'ы к модели не привязаны, но их состояние сохраняется, сколько бы раз я не открыл окно. Естественно, если открыть 2а окна с этим элементом управления, будет плохо :) по этому, такой вариант лучше исключить. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2018, 23:54 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Roman MejtesТочно такая же фигня есть в TabControl'е, так как вкладки в нём являются по сути не элементами управления, а шаблонами.Ага, раз попытался использовать TabControl через ItemsSource - обплевался и сделал небольшую надстройку, которая добавляет вкладки кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 00:03 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Автор, так и не объяснил что за состояние если есть модель. Тебя ведь вспомнит за тобой программист за велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 08:29 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspShocker.ProЕсли используется MVVM, то проблем нет, модель-то можно не убивать. Или речь идет о сохранении состояния скроллеров и тому подобное? Да, состояния элементов окна. Данные понятно в модели и модели представления сохраняются. Просто не хотелось сохранять состояние каждого контрола. Вот и думаю об обходных путях.переведи. Не знаешь разницу модального, скрытого и нк модального? А также "всегда наверху"? Я как пользователь, всегда должен ожидать поведение ИС. А тут изобретаем полумодальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 08:36 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123Автор, так и не объяснил что за состояние если есть модель.Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 10:16 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProPetro123Автор, так и не объяснил что за состояние если есть модель.Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера.это всегда лет 20 руками делали в датасете либо немодал окно. Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 12:05 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Кроме скролла все? А то выходит что в WPF как то сложно все с элементарными действиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 12:07 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123Кроме скролла все? А то выходит что в WPF как то сложно все с элементарными действиями.состояние раскрытия узлов дерева, элемент, на котором фокус, выделение в текстбоксах и т.д. и т.п. Petro123это всегда лет 20 руками делали в датасете либо немодал окно. Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное.Какой-то бессвязный набор слов, причем тут вообще датасет и пользователь. Если ты в винформах выгрузишь окно, то контролы точно так же не сохранят свое состояние, так что какие у тебя претензии к WPF - непонятно. Привык бревна пилить ножовкой - тебе на электропилу и не стоит переходить ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 12:34 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.Proсостояние раскрытия узлов дерева, элемент, на котором фокус, выделение в текстбоксах и т.д. и т.п. вот если автор так скажет...про выделение в текстовом поле....и хочу его сохранить. То ему прямая дорога в НЕ модальное окно. Не очевидно? Будешь спорить? А то счас насоветуем...велосипедов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:23 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123Shocker.Proпропущено... Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера.это всегда лет 20 руками делали в датасете либо немодал окно. Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное. Я сразу, написал что знаю как это "руками" в коде сделать. Интересовался нет ли другого более удобного способа. Кроме скролов на форме есть ещё элементы которые влияют друг на друга (выделения, затенения, разный вид отображения и т.п.). Но так как это только для визуального удобства я не выносил это в VM. Познакомился с WPF меньше 4 месяцев назад, с C# на месяц раньше. Поэтому и задаю "детские" вопросы чтобы "не изобретать велосипед", а пользоваться общепринятыми (если они есть) подходами к решению задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:26 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123вот если автор так скажет...про выделение в текстовом поле....и хочу его сохранить. То ему прямая дорога в НЕ модальное окно. Не очевидно? Будешь спорить?А я и не советую модальное окно, я их не люблю. Роман уже дал адекветный ответ, тут внезапно проснулся Петя, и начал пытаться выяснять, о чем тут вообще взрослые дяди говорят. Вот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:30 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspНо так как это только для визуального удобства я не выносил это в VM. это выносят в настройки окна которые сохраняются на диск. Например, текущая вкладка из многих вкладок. Положение окна. Разумеется выделение текстовых полей не сохраняют в настройках. Просто меняют с модального на не модальный. Логично? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:39 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProА я и не советую модальное окно, я их не люблю. Роман уже дал адекветный ответ, тут внезапно проснулся Петя, и начал пытаться выяснять, о чем тут вообще взрослые дяди говорят. Вот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя ) По результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне. Он проще встраивается в уже созданное. А на будущее возможность варианта Романа, конечно, буду учитывать. Это более основательный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:41 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProВот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя ) меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности. Роман тут ни при чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:41 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности. Роман тут ни при чём.У меня есть очень давний опыт работы. Это когда ещё были Fortran, Си без плюсов и т.п. Потом долгое время практически не программировал. Только время от времени ограничено использовал VBA. Желание было, не было возможности (в основном времени). Сейчас такая возможность появилась. Пытаюсь ею воспользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:46 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspПо результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне. Он проще встраивается в уже созданное. Ну. Т.е. ты сделал окно не модальным! А дальше запрещай или подсвечивай или скрывай всё окно. Нет проблем. Проблема была в модальности ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:48 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123Eld HaspНо так как это только для визуального удобства я не выносил это в VM. это выносят в настройки окна которые сохраняются на диск. Например, текущая вкладка из многих вкладок. Положение окна. Разумеется выделение текстовых полей не сохраняют в настройках. Просто меняют с модального на не модальный. Логично?Да, это понятно. Но мне такого "глобального" сохранения между вызовами приложения не нужно. Под "Просто меняют с модального на не модальный" Вы же имеете ввиду разные методы показа окна Show и ShowDialog? Или после показа ShowDialog можно изменить модальность? Разве такое возможно? Или я заблуждаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:52 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspPetro123меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности. Роман тут ни при чём.У меня есть очень давний опыт работы. Это когда ещё были Fortran, Си без плюсов и т.п. Потом долгое время практически не программировал. Только время от времени ограничено использовал VBA. Желание было, не было возможности (в основном времени). Сейчас такая возможность появилась. Пытаюсь ею воспользоваться. Тут разговор только о логичности в окнах винды: - модальное - это всё кроме окна недоступно и оно уничтожается при закрытии - не модальное - это окно можно скрыть и опять показать например на клавишу Tab как в фотошоп. При немодальном окне закрывать все контролы от доступа не имеет смысла. Только в качестве костыля который ты счас сделал. Надеюсь временно. Логично? Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:53 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspПод "Просто меняют с модального на не модальный" Вы же имеете ввиду разные методы показа окна Show и ShowDialog? да. Не надо менять модальность. Родил модальное окно - его и показывай. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:56 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Petro123Eld HaspПо результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне. Он проще встраивается в уже созданное. Ну. Т.е. ты сделал окно не модальным! А дальше запрещай или подсвечивай или скрывай всё окно. Нет проблем. Проблема была в модальности ))) Проблема была в том, что изначально сделал модальным. Потом при тестовой эксплуатации выяснилось, что удобнее будет сохранять состояние контролов окна между вызовами. Сразу сделать просто немодальным не получилось. Не пришла в голову мысль о том, что можно всё окно сделать доступным только для чтения. И нужно переделать вызов и передачу параметров между окнами. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:56 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Shocker.ProА я и не советую модальное окно, я их не люблю ты делаешь псевдомодальность как в эксплорере. Чего я не люблю))). Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 13:59 |
|
Скрытие модального окна.
|
|||
---|---|---|---|
#18+
Eld HaspПроблема была в том, что изначально сделал модальным. Потом при тестовой эксплуатации выяснилось, что удобнее будет сохранять состояние контролов окна между вызовами. Сразу сделать просто немодальным не получилось. Не пришла в голову мысль о том, что можно всё окно сделать доступным только для чтения. И нужно переделать вызов и передачу параметров между окнами. да. Я понял. Временное решение и временный костыль. Я знаю что смену на не модальность надо много переделать. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2018, 14:01 |
|
|
start [/forum/topic.php?all=1&fid=21&tid=1440382]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 275ms |
0 / 0 |