powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Простой вопрос (наверное, сам ответа не знаю!)
24 сообщений из 24, страница 1 из 1
Простой вопрос (наверное, сам ответа не знаю!)
    #39095869
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, мой предыдущий вопрос оказался зело сложным, больше 50 просмотров, ноль ответов!
Спрошу чего попроще. Сам в WPF новичок, делаю первые шаги, соответственно, не знаю, как сделать обычные вещи.

В общем, надо следующее. Есть окно, в нём - grid. В ячейке grid-а - UserControl, отображает COM-компонент, пусть он называется ucDetails. По определённой команде, надо этот контрол спрятать, а вместо него показать другой, в нём настройки для этого компонента, пусть будет ucSettings. Причём не модальный диалог, а именно in-place замена. По нажатию кнопки ОК надо ucSettings спрятать, и показать обратно ucDetails. Причём ucDetails убивать и создавать нельзя - у него долгая инициализация, надо именно прятать.

В WTL сделал бы child-диаложку, показал её поверх, и дело с концом. А тут куча вариантов, и все какие-то не привычные. Ну, наверное ж у спецов уже есть какие-то удобные способы это сделать.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39095894
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thконтрол спрятать, а вместо него показать другойпять раз перечитал и не понял, чем не устраивает Visibility
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39095920
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в WPF есть 3 состояния видимости.
1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются.
2ое Hidden - элемент управления невидим, но в остальном всё работает и инициализируется так, как будто он видим.
3ое Visible - элемент управления видим и работает как обычно

Для переключения видимости в зависимости от состояния свойства зависимости лучше использовать Trigger'ы, это удобнее и нагляднее
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096021
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, ну, как-то привык, что на ОК надо уничтожать окошки, а на Tools-Options создавать, никак не привыкну, что они декларативно управляются, а не через процесс создания/удаления.

Повторюсь, я новичок в WPF. Некоторые вещи, которые у опытных уже сами собой получаются, мне просто в голову не приходят. Я доку и туториалы, конечно, читаю. И спрашивать "а как сделать, что бы картинка крутилась?" считаю не вежливо - этого полно в инете. Но на некоторые вещи ответа не нашёл. Может, не правильно спрашивал.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096111
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все равно не понял. Даже если бы это был бы не WPF. Есть задача скрыть один элемент и показать другой. Зачем их уничтожать-то? Уничтожатся, когда будет закрыта общая форма.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096130
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

при этом еще и сам автор пишет, что на инициализацию уходит много времени. Тогда какой смысл делать её каждый раз?
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096147
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesShocker.Pro,

при этом еще и сам автор пишет, что на инициализацию уходит много времени. Тогда какой смысл делать её каждый раз?не, ну тут понятнее, инициализация может не понадобится вообще, если пользователь не щелкнул на кнопку "настройки". то есть при первом вызове создавать, а потом просто прятать
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096250
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долгая инициализация не ucSettings, а ucDetails. Основную форму убирать нельзя. Настройки - можно.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096256
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну то есть на ucDetails по любому тратится время при загрузке формы. А коли ucSettings быстрая, так и ее можно грузить сразу, а потом только переключать видимость (байндингом или триггерами)
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096258
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, создавать оба окна и показывать по очереди - нормальная практика?
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096261
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а как использовать binding и триггеры? У меня сейчас просто кнопка "настройки" и "ОК". Нажал "настройки" - спрятал детальку, показал настройки. Нажал "закрыть" - спрятал настройки, показал детальки.

Не совсем понимаю, при чём тут связывание и триггеры?
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096280
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальная.

У-у-у, тут все запущено.
Начав работать с WPF нужно забыть все, чему научился, работая с Winforms, все подходы к работе с интерфейсом. Нужно изучить подход MVVM и начать мыслить его категориями (требуется, конечно, некоторое время и некоторая практика, чтобы набить руку).

Смысл в том, что у тебя есть ViewModel. Обработчик кнопки ничего не должен знать о том, что и как у тебя отображается. Он просто меняет во ViewModel-и какое-то свойство (например Mode (enum) или типа IsSettings (bool))
Сам же XAML привязан к этому свойству ViewModel-и. Конкретно Visibility нужных тебе объектов. Ему все равно, кто и зачем меняет это свойство, бизнес-логика представлению неинтересна. Оно просто реагирует на изменение свойств ViewModel-и.

Таким образом бизнес-логика работает сама по себе (не заморачиваясь визуализацией), представление работает само по себе (не заморачивась бизнес-логикой), связующее звено - VM
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096459
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а, понял. Я просто по аналогии с MFC думал, что не обязательно изучать Document-View, что бы писать приложения начального уровня, поэтому изучение MVVM пока отложил. Похоже, зря. Ладно, отложу пока писанину, почитаю ещё.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096494
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, необязательно, конечно. Можно пользоваться и как в WF - на событиях и прямом обращении к элементам.

Но, поверьте, стоит сразу привыкать к хорошему. Да, придется потратиться на изучение. Да, первичное создание простой программы занимает больше времени и усилий мозга на разработку VM, чем в Forms. Но потом какое удовольствие от того, что серьезные изменения функциональности приложения (и интерфейса в особенности) делаются легким движением руки, и первичные затраты усилий легко окупаются при развитии приложения.

Если же есть задача, сляпать что-то за пять минут, что не предполагает дальнейшего развития, можно и упростить себе задачу, не парясь правильной архитектурой.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096507
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По аналогии, можно быстро наляпать спагетти-код, решить проблему и забыть о ней. А можно посидеть с карандашом и листом бумаги и спроектировать многоуровневую архитектуру с независимыми слоями и тестами, которую будет потом легко сопровождать и развивать.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096832
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу перевести старинную весьма объёмную прилагу с WTL на WPF. Сейчас я делаю макет, цель которого понять:
* подходит ли технология нам;
* удастся ли интегрировать в интерфейс, сделанный по новым технологиям, старые модули, взаимодействующие через COM;
* какова производительность WTL по сравнению с WTL;
* какова трудоёмкость поддержки локализованных и кастомизированных версий продукта;
-------------------
Много ещё чего. Сейчас стадия написания макета. Пока, вроде нравится, но вот такое:
http://www.sql.ru/forum/1181981/pomogite-s-windowsformshost-nevernyy-razmer
реально вымораживает. Хотелось бы вот такие опасные места сразу локализовать, и сразу понять, что с этим делать.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096836
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На этой стадии архитектура не так важна, поэтому я MVVM пока пропустил, сделал на командах. Оригинальный продукт, естественно, не будет таким разгильдяйским.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39096957
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13thХочу перевести старинную весьма объёмную прилагу с WTL на WPF. Сейчас я делаю макет, цель которого понять:
* подходит ли технология нам;
* удастся ли интегрировать в интерфейс, сделанный по новым технологиям, старые модули, взаимодействующие через COM;
* какова производительность WTL по сравнению с WTL;
* какова трудоёмкость поддержки локализованных и кастомизированных версий продукта;
-------------------
Много ещё чего. Сейчас стадия написания макета. Пока, вроде нравится, но вот такое:
http://www.sql.ru/forum/1181981/pomogite-s-windowsformshost-nevernyy-razmer
реально вымораживает. Хотелось бы вот такие опасные места сразу локализовать, и сразу понять, что с этим делать.таким межплатформенных проблем может быть очень много
к примеру если WPF встраивать в WF можно ловить баги с фокусом, когда элемент управления в WinForms в фокусе ввода и в WPF в фокусе ввода, что не возможно и вызывает ошибку и так далее.
Но всё пока решалось.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39097423
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, спс за предупреждение, но пока вроде получается обойтись без такого микса. Максимум - COM на WinForms на WPF (через WindowsFormsHost, сделал дляскорости). Потом переделаем на HwndHost. Ну а дальше - видно будет.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39127968
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesв WPF есть 3 состояния видимости.
1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются.
А это что? (мышка над)
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39128653
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Света7415Roman Mejtesв WPF есть 3 состояния видимости.
1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются.
А это что? (мышка над)
Не понял ваш вопрос, если элемент Collapsed, то мышку на него навести невозможно, он не обрабатывает Tunel события, по этому сделать триггер типа IsMouseOver для Collapsed элемента не возможно, точка.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39128771
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesсделать триггер типа IsMouseOver для Collapsed элемента не возможно, точка.
Код: xml
1.
2.
3.
4.
5.
6.
7.
        <Menu  Grid.Row="0" Background="AliceBlue" Foreground="Navy" FontWeight="Bold">
            <CheckBox  x:Name="onBox"  Margin="0,4,0,4" Content="ttt" />
            <MenuItem x:Name="mMenu" Header="{DynamicResource m_Menu_Item0}" Margin="4,4,0,4"/>
            <ProgressBar x:Name="progress" 
				Height="10" Width="100"
				Visibility="Collapsed"/>
        </Menu>

" это код, а картинка выше снимок экрана, наведённую мышку там не видно, не знаю как фотать экран, чтоб было видно, но она есть, и "невозможное возможно"))) Без мышки всё ОК: нет progress-а.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39128800
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Света7415,

подсвечивается не сам ProgressBar, а его контейнер.
Menu это обычный ItemsControl, а ProgressBar это содержимое MenuItem.
ItemsControl очень хитро устроен :)
в вашем примере в Menu будет 3 элемента MenuItem, при этом 1 и 3 будут сгенирированы, а 2 будет таким каким вы его создали.
Сам MenuItem не является скрытым, скрыто только его содержимое, по этому выделяется именно он, а не ProgresBar.
...
Рейтинг: 0 / 0
Простой вопрос (наверное, сам ответа не знаю!)
    #39128856
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,
спасибо, понятно теперь
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Простой вопрос (наверное, сам ответа не знаю!)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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