powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрытие модального окна.
25 сообщений из 33, страница 1 из 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
25 сообщений из 33, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрытие модального окна.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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