|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Похоже, мой предыдущий вопрос оказался зело сложным, больше 50 просмотров, ноль ответов! Спрошу чего попроще. Сам в WPF новичок, делаю первые шаги, соответственно, не знаю, как сделать обычные вещи. В общем, надо следующее. Есть окно, в нём - grid. В ячейке grid-а - UserControl, отображает COM-компонент, пусть он называется ucDetails. По определённой команде, надо этот контрол спрятать, а вместо него показать другой, в нём настройки для этого компонента, пусть будет ucSettings. Причём не модальный диалог, а именно in-place замена. По нажатию кнопки ОК надо ucSettings спрятать, и показать обратно ucDetails. Причём ucDetails убивать и создавать нельзя - у него долгая инициализация, надо именно прятать. В WTL сделал бы child-диаложку, показал её поверх, и дело с концом. А тут куча вариантов, и все какие-то не привычные. Ну, наверное ж у спецов уже есть какие-то удобные способы это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 19:54 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
13thконтрол спрятать, а вместо него показать другойпять раз перечитал и не понял, чем не устраивает Visibility ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 20:37 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
в WPF есть 3 состояния видимости. 1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются. 2ое Hidden - элемент управления невидим, но в остальном всё работает и инициализируется так, как будто он видим. 3ое Visible - элемент управления видим и работает как обычно Для переключения видимости в зависимости от состояния свойства зависимости лучше использовать Trigger'ы, это удобнее и нагляднее ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2015, 21:04 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Shocker.Pro, ну, как-то привык, что на ОК надо уничтожать окошки, а на Tools-Options создавать, никак не привыкну, что они декларативно управляются, а не через процесс создания/удаления. Повторюсь, я новичок в WPF. Некоторые вещи, которые у опытных уже сами собой получаются, мне просто в голову не приходят. Я доку и туториалы, конечно, читаю. И спрашивать "а как сделать, что бы картинка крутилась?" считаю не вежливо - этого полно в инете. Но на некоторые вещи ответа не нашёл. Может, не правильно спрашивал. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 01:54 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Я все равно не понял. Даже если бы это был бы не WPF. Есть задача скрыть один элемент и показать другой. Зачем их уничтожать-то? Уничтожатся, когда будет закрыта общая форма. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:26 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Shocker.Pro, при этом еще и сам автор пишет, что на инициализацию уходит много времени. Тогда какой смысл делать её каждый раз? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:56 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Roman MejtesShocker.Pro, при этом еще и сам автор пишет, что на инициализацию уходит много времени. Тогда какой смысл делать её каждый раз?не, ну тут понятнее, инициализация может не понадобится вообще, если пользователь не щелкнул на кнопку "настройки". то есть при первом вызове создавать, а потом просто прятать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:09 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Долгая инициализация не ucSettings, а ucDetails. Основную форму убирать нельзя. Настройки - можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:35 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Ну то есть на ucDetails по любому тратится время при загрузке формы. А коли ucSettings быстрая, так и ее можно грузить сразу, а потом только переключать видимость (байндингом или триггерами) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:38 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Короче, создавать оба окна и показывать по очереди - нормальная практика? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:39 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Shocker.Pro, а как использовать binding и триггеры? У меня сейчас просто кнопка "настройки" и "ОК". Нажал "настройки" - спрятал детальку, показал настройки. Нажал "закрыть" - спрятал настройки, показал детальки. Не совсем понимаю, при чём тут связывание и триггеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:42 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Нормальная. У-у-у, тут все запущено. Начав работать с WPF нужно забыть все, чему научился, работая с Winforms, все подходы к работе с интерфейсом. Нужно изучить подход MVVM и начать мыслить его категориями (требуется, конечно, некоторое время и некоторая практика, чтобы набить руку). Смысл в том, что у тебя есть ViewModel. Обработчик кнопки ничего не должен знать о том, что и как у тебя отображается. Он просто меняет во ViewModel-и какое-то свойство (например Mode (enum) или типа IsSettings (bool)) Сам же XAML привязан к этому свойству ViewModel-и. Конкретно Visibility нужных тебе объектов. Ему все равно, кто и зачем меняет это свойство, бизнес-логика представлению неинтересна. Оно просто реагирует на изменение свойств ViewModel-и. Таким образом бизнес-логика работает сама по себе (не заморачиваясь визуализацией), представление работает само по себе (не заморачивась бизнес-логикой), связующее звено - VM ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:52 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Shocker.Pro, а, понял. Я просто по аналогии с MFC думал, что не обязательно изучать Document-View, что бы писать приложения начального уровня, поэтому изучение MVVM пока отложил. Похоже, зря. Ладно, отложу пока писанину, почитаю ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:43 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Не, необязательно, конечно. Можно пользоваться и как в WF - на событиях и прямом обращении к элементам. Но, поверьте, стоит сразу привыкать к хорошему. Да, придется потратиться на изучение. Да, первичное создание простой программы занимает больше времени и усилий мозга на разработку VM, чем в Forms. Но потом какое удовольствие от того, что серьезные изменения функциональности приложения (и интерфейса в особенности) делаются легким движением руки, и первичные затраты усилий легко окупаются при развитии приложения. Если же есть задача, сляпать что-то за пять минут, что не предполагает дальнейшего развития, можно и упростить себе задачу, не парясь правильной архитектурой. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:58 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
По аналогии, можно быстро наляпать спагетти-код, решить проблему и забыть о ней. А можно посидеть с карандашом и листом бумаги и спроектировать многоуровневую архитектуру с независимыми слоями и тестами, которую будет потом легко сопровождать и развивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 13:03 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Хочу перевести старинную весьма объёмную прилагу с WTL на WPF. Сейчас я делаю макет, цель которого понять: * подходит ли технология нам; * удастся ли интегрировать в интерфейс, сделанный по новым технологиям, старые модули, взаимодействующие через COM; * какова производительность WTL по сравнению с WTL; * какова трудоёмкость поддержки локализованных и кастомизированных версий продукта; ------------------- Много ещё чего. Сейчас стадия написания макета. Пока, вроде нравится, но вот такое: http://www.sql.ru/forum/1181981/pomogite-s-windowsformshost-nevernyy-razmer реально вымораживает. Хотелось бы вот такие опасные места сразу локализовать, и сразу понять, что с этим делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 17:00 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
На этой стадии архитектура не так важна, поэтому я MVVM пока пропустил, сделал на командах. Оригинальный продукт, естественно, не будет таким разгильдяйским. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 17:01 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
13thХочу перевести старинную весьма объёмную прилагу с WTL на WPF. Сейчас я делаю макет, цель которого понять: * подходит ли технология нам; * удастся ли интегрировать в интерфейс, сделанный по новым технологиям, старые модули, взаимодействующие через COM; * какова производительность WTL по сравнению с WTL; * какова трудоёмкость поддержки локализованных и кастомизированных версий продукта; ------------------- Много ещё чего. Сейчас стадия написания макета. Пока, вроде нравится, но вот такое: http://www.sql.ru/forum/1181981/pomogite-s-windowsformshost-nevernyy-razmer реально вымораживает. Хотелось бы вот такие опасные места сразу локализовать, и сразу понять, что с этим делать.таким межплатформенных проблем может быть очень много к примеру если WPF встраивать в WF можно ловить баги с фокусом, когда элемент управления в WinForms в фокусе ввода и в WPF в фокусе ввода, что не возможно и вызывает ошибку и так далее. Но всё пока решалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 19:28 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Roman Mejtes, спс за предупреждение, но пока вроде получается обойтись без такого микса. Максимум - COM на WinForms на WPF (через WindowsFormsHost, сделал дляскорости). Потом переделаем на HwndHost. Ну а дальше - видно будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 23:04 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Roman Mejtesв WPF есть 3 состояния видимости. 1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются. А это что? (мышка над) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 04:02 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Света7415Roman Mejtesв WPF есть 3 состояния видимости. 1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются. А это что? (мышка над) Не понял ваш вопрос, если элемент Collapsed, то мышку на него навести невозможно, он не обрабатывает Tunel события, по этому сделать триггер типа IsMouseOver для Collapsed элемента не возможно, точка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 15:10 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Roman Mejtesсделать триггер типа IsMouseOver для Collapsed элемента не возможно, точка. Код: xml 1. 2. 3. 4. 5. 6. 7.
" это код, а картинка выше снимок экрана, наведённую мышку там не видно, не знаю как фотать экран, чтоб было видно, но она есть, и "невозможное возможно"))) Без мышки всё ОК: нет progress-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 16:16 |
|
Простой вопрос (наверное, сам ответа не знаю!)
|
|||
---|---|---|---|
#18+
Света7415, подсвечивается не сам ProgressBar, а его контейнер. Menu это обычный ItemsControl, а ProgressBar это содержимое MenuItem. ItemsControl очень хитро устроен :) в вашем примере в Menu будет 3 элемента MenuItem, при этом 1 и 3 будут сгенирированы, а 2 будет таким каким вы его создали. Сам MenuItem не является скрытым, скрыто только его содержимое, по этому выделяется именно он, а не ProgresBar. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 16:31 |
|
|
start [/forum/topic.php?fid=21&msg=39127968&tid=1440756]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 247ms |
total: | 516ms |
0 / 0 |