powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрытие модального окна.
33 сообщений из 33, показаны все 2 страниц
Скрытие модального окна.
    #39727928
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я с очередным "детским" вопросом.
Столкнулся с такой потребностью. Два окна. Из первого несколько раз вызывается второе в модальном режиме. После завершения работы второго управление возвращается в первое. Всё бы ничего, но во втором значительное количество контролов, состояние которых между между вызовами желательно сохранять. Понятно, что это можно сделать через сохранение данных в коде.
Но гораздо проще было бы скрыть второе, чтобы вернулось управление в первое окно. Но в модальном режиме, скрыть окно нельзя.
Какой наиболее простой и правильный способ для решения этого?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727930
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если используется MVVM, то проблем нет, модель-то можно не убивать.
Или речь идет о сохранении состояния скроллеров и тому подобное?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727935
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЕсли используется MVVM, то проблем нет, модель-то можно не убивать.
Или речь идет о сохранении состояния скроллеров и тому подобное?
Да, состояния элементов окна. Данные понятно в модели и модели представления сохраняются.
Просто не хотелось сохранять состояние каждого контрола. Вот и думаю об обходных путях.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727937
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я никогда не делал несколько окон в WPF-приложениях.
Либо вкладки, как в браузере, либо выводится некое диалоговое псевдоокно поверх всего содержимого основного окна - фактически прямоугольник с границами, а поля вокруг него затеняются полупрозрачностью.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727939
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЛично я никогда не делал несколько окон в WPF-приложениях.
Либо вкладки, как в браузере, либо выводится некое диалоговое псевдоокно поверх всего содержимого основного окна - фактически прямоугольник с границами, а поля вокруг него затеняются полупрозрачностью.Мне просто при работе второго окна нужно сохранять видимость первого. Информация из него упрощает работу во втором. Но изменять эту информацию пока открыто второе нельзя - возможны коллизии.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727942
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНо изменять эту информацию пока открыто второе нельзя - возможны коллизии.так заблокируй редактирование Window.IsEnabled=false. Либо можно поиграться с Focusable, если принципиально, чтобы не изменялся внешний вид
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727945
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro...... так заблокируй редактирование Window.IsEnabled=false. Либо можно поиграться с Focusable, если принципиально, чтобы не изменялся внешний видТо есть вызывать второе обычным Show, а перед его скрытием разблокировать первое. Да, вариант.
Только надо продумать как в первом узнать, что второе скрылось. При использовании ShowDialogs необходимость в этом не было.
Подумаю....
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727948
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман где-то выкладывал свой менеджер окон.
Попробуй поискать среди его постов в WPF
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727949
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesсоздайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться.А где он будет жить между сеансами? Просто в переменной?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727955
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProRoman Mejtesсоздайте элемент управления, и открывайте (добавляйте в новое окно) его каждый раз в новом окне, он будет сохранять свое состояние. если использовать чисто модель, то не все состояния будут сохраняться.А где он будет жить между сеансами? Просто в переменной?........?
Создать в коде и потом просто добавлять в окно....
Или, наоборот. В коде просто сохранить ссылку на него. При закрытии окна элемент не закроется? А при новом открытии присвоить элементу значение из ссылки.
Такое, что - сработает?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727965
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
<Window x:Class="WpfApp7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp7"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ContentControl x:Key="MyContent">
            <StackPanel>
                <CheckBox Content="Item1"/>
                <CheckBox Content="Item2"/>
                <CheckBox Content="Item3"/>
                <CheckBox Content="Item4"/>
                <CheckBox Content="Item5"/>
                <CheckBox Content="Item6"/>
            </StackPanel>
        </ContentControl>
    </Window.Resources>
    <Grid>
        <Button Padding="10,5" HorizontalAlignment="Center" VerticalAlignment="Center"
                Content="Open Dialog Window" Click="Button_Click"/>
    </Grid>
</Window>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
using System.Windows;

namespace WpfApp7
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var dialogWindow = new Window { Content = FindResource("MyContent") };
            dialogWindow.ShowDialog();
        }
    }
}
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727966
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesТочно такая же фигня есть в TabControl'е, так как вкладки в нём являются по сути не элементами управления, а шаблонами.Ага, раз попытался использовать TabControl через ItemsSource - обплевался и сделал небольшую надстройку, которая добавляет вкладки кодом.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727988
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор, так и не объяснил что за состояние если есть модель. Тебя ведь вспомнит за тобой программист за велосипед.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39727989
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspShocker.ProЕсли используется MVVM, то проблем нет, модель-то можно не убивать.
Или речь идет о сохранении состояния скроллеров и тому подобное?
Да, состояния элементов окна. Данные понятно в модели и модели представления сохраняются.
Просто не хотелось сохранять состояние каждого контрола. Вот и думаю об обходных путях.переведи. Не знаешь разницу модального, скрытого и нк модального? А также "всегда наверху"?
Я как пользователь, всегда должен ожидать поведение ИС. А тут изобретаем полумодальное.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728005
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Автор, так и не объяснил что за состояние если есть модель.Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728032
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProPetro123Автор, так и не объяснил что за состояние если есть модель.Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера.это всегда лет 20 руками делали в датасете либо немодал окно.
Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728034
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме скролла все?
А то выходит что в WPF как то сложно все с элементарными действиями.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728045
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Кроме скролла все?
А то выходит что в WPF как то сложно все с элементарными действиями.состояние раскрытия узлов дерева, элемент, на котором фокус, выделение в текстбоксах и т.д. и т.п.

Petro123это всегда лет 20 руками делали в датасете либо немодал окно.
Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное.Какой-то бессвязный набор слов, причем тут вообще датасет и пользователь. Если ты в винформах выгрузишь окно, то контролы точно так же не сохранят свое состояние, так что какие у тебя претензии к WPF - непонятно. Привык бревна пилить ножовкой - тебе на электропилу и не стоит переходить )
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728064
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proсостояние раскрытия узлов дерева, элемент, на котором фокус, выделение в текстбоксах и т.д. и т.п.
вот если автор так скажет...про выделение в текстовом поле....и хочу его сохранить.
То ему прямая дорога в НЕ модальное окно.
Не очевидно? Будешь спорить?
А то счас насоветуем...велосипедов.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728065
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Shocker.Proпропущено...
Некоторые состояния контролов в модели не сохраняются, например состояние прокрутки скроллера.это всегда лет 20 руками делали в датасете либо немодал окно.
Пользователь же не совсем дурак. Он понимает когда окно скрыто, а когда модальное.
Я сразу, написал что знаю как это "руками" в коде сделать. Интересовался нет ли другого более удобного способа.
Кроме скролов на форме есть ещё элементы которые влияют друг на друга (выделения, затенения, разный вид отображения и т.п.). Но так как это только для визуального удобства я не выносил это в VM.

Познакомился с WPF меньше 4 месяцев назад, с C# на месяц раньше. Поэтому и задаю "детские" вопросы чтобы "не изобретать велосипед", а пользоваться общепринятыми (если они есть) подходами к решению задач.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728068
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вот если автор так скажет...про выделение в текстовом поле....и хочу его сохранить.
То ему прямая дорога в НЕ модальное окно.
Не очевидно? Будешь спорить?А я и не советую модальное окно, я их не люблю. Роман уже дал адекветный ответ, тут внезапно проснулся Петя, и начал пытаться выяснять, о чем тут вообще взрослые дяди говорят. Вот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя )
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728074
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНо так как это только для визуального удобства я не выносил это в VM.
это выносят в настройки окна которые сохраняются на диск.
Например, текущая вкладка из многих вкладок. Положение окна.
Разумеется выделение текстовых полей не сохраняют в настройках. Просто меняют с модального на не модальный.
Логично?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728075
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProА я и не советую модальное окно, я их не люблю. Роман уже дал адекветный ответ, тут внезапно проснулся Петя, и начал пытаться выяснять, о чем тут вообще взрослые дяди говорят. Вот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя )
По результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне.
Он проще встраивается в уже созданное.
А на будущее возможность варианта Романа, конечно, буду учитывать. Это более основательный подход.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728076
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВот видишь, человек 4 месяца в WPF и уже гораздо опытней тебя )
меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности.
Роман тут ни при чём.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728079
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности.
Роман тут ни при чём.У меня есть очень давний опыт работы. Это когда ещё были Fortran, Си без плюсов и т.п. Потом долгое время практически не программировал. Только время от времени ограничено использовал VBA. Желание было, не было возможности (в основном времени). Сейчас такая возможность появилась. Пытаюсь ею воспользоваться.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728080
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspПо результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне.
Он проще встраивается в уже созданное.
Ну.
Т.е. ты сделал окно не модальным!
А дальше запрещай или подсвечивай или скрывай всё окно.
Нет проблем.
Проблема была в модальности )))
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728083
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspНо так как это только для визуального удобства я не выносил это в VM.
это выносят в настройки окна которые сохраняются на диск.
Например, текущая вкладка из многих вкладок. Положение окна.
Разумеется выделение текстовых полей не сохраняют в настройках. Просто меняют с модального на не модальный.
Логично?Да, это понятно.
Но мне такого "глобального" сохранения между вызовами приложения не нужно.
Под "Просто меняют с модального на не модальный" Вы же имеете ввиду разные методы показа окна Show и ShowDialog?
Или после показа ShowDialog можно изменить модальность? Разве такое возможно? Или я заблуждаюсь?
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728085
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspPetro123меня удивляет что ты не опытный, если делаешь псевдомодальность(фоном) вместо немодальности.
Роман тут ни при чём.У меня есть очень давний опыт работы. Это когда ещё были Fortran, Си без плюсов и т.п. Потом долгое время практически не программировал. Только время от времени ограничено использовал VBA. Желание было, не было возможности (в основном времени). Сейчас такая возможность появилась. Пытаюсь ею воспользоваться.
Тут разговор только о логичности в окнах винды:
- модальное - это всё кроме окна недоступно и оно уничтожается при закрытии
- не модальное - это окно можно скрыть и опять показать например на клавишу Tab как в фотошоп.
При немодальном окне закрывать все контролы от доступа не имеет смысла.
Только в качестве костыля который ты счас сделал.
Надеюсь временно.
Логично?
Удачи!
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728087
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspПод "Просто меняют с модального на не модальный" Вы же имеете ввиду разные методы показа окна Show и ShowDialog?
да.
Не надо менять модальность.
Родил модальное окно - его и показывай.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728089
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Eld HaspПо результатам экспериментов. Наиболее близкое поведение к желаемому получилось добиться используя Ваш совет о запрете редактирования в окне.
Он проще встраивается в уже созданное.
Ну.
Т.е. ты сделал окно не модальным!
А дальше запрещай или подсвечивай или скрывай всё окно.
Нет проблем.
Проблема была в модальности )))
Проблема была в том, что изначально сделал модальным. Потом при тестовой эксплуатации выяснилось, что удобнее будет сохранять состояние контролов окна между вызовами.
Сразу сделать просто немодальным не получилось. Не пришла в голову мысль о том, что можно всё окно сделать доступным только для чтения. И нужно переделать вызов и передачу параметров между окнами.
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728091
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА я и не советую модальное окно, я их не люблю
ты делаешь псевдомодальность как в эксплорере. Чего я не люблю))).
Удачи!
...
Рейтинг: 0 / 0
Скрытие модального окна.
    #39728092
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspПроблема была в том, что изначально сделал модальным. Потом при тестовой эксплуатации выяснилось, что удобнее будет сохранять состояние контролов окна между вызовами.
Сразу сделать просто немодальным не получилось. Не пришла в голову мысль о том, что можно всё окно сделать доступным только для чтения. И нужно переделать вызов и передачу параметров между окнами.
да.
Я понял. Временное решение и временный костыль.
Я знаю что смену на не модальность надо много переделать.
Удачи!
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрытие модального окна.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]