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

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

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

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

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

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

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

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

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

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

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

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

Если же есть задача, сляпать что-то за пять минут, что не предполагает дальнейшего развития, можно и упростить себе задачу, не парясь правильной архитектурой.
...
Рейтинг: 0 / 0
06.11.2015, 13:03
    #39096507
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
По аналогии, можно быстро наляпать спагетти-код, решить проблему и забыть о ней. А можно посидеть с карандашом и листом бумаги и спроектировать многоуровневую архитектуру с независимыми слоями и тестами, которую будет потом легко сопровождать и развивать.
...
Рейтинг: 0 / 0
06.11.2015, 17:00
    #39096832
13th
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
Хочу перевести старинную весьма объёмную прилагу с WTL на WPF. Сейчас я делаю макет, цель которого понять:
* подходит ли технология нам;
* удастся ли интегрировать в интерфейс, сделанный по новым технологиям, старые модули, взаимодействующие через COM;
* какова производительность WTL по сравнению с WTL;
* какова трудоёмкость поддержки локализованных и кастомизированных версий продукта;
-------------------
Много ещё чего. Сейчас стадия написания макета. Пока, вроде нравится, но вот такое:
http://www.sql.ru/forum/1181981/pomogite-s-windowsformshost-nevernyy-razmer
реально вымораживает. Хотелось бы вот такие опасные места сразу локализовать, и сразу понять, что с этим делать.
...
Рейтинг: 0 / 0
06.11.2015, 17:01
    #39096836
13th
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
На этой стадии архитектура не так важна, поэтому я MVVM пока пропустил, сделал на командах. Оригинальный продукт, естественно, не будет таким разгильдяйским.
...
Рейтинг: 0 / 0
06.11.2015, 19:28
    #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
07.11.2015, 23:04
    #39097423
13th
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
Roman Mejtes, спс за предупреждение, но пока вроде получается обойтись без такого микса. Максимум - COM на WinForms на WPF (через WindowsFormsHost, сделал дляскорости). Потом переделаем на HwndHost. Ну а дальше - видно будет.
...
Рейтинг: 0 / 0
15.12.2015, 04:02
    #39127968
Света7415
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
Roman Mejtesв WPF есть 3 состояния видимости.
1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются.
А это что? (мышка над)
...
Рейтинг: 0 / 0
15.12.2015, 15:10
    #39128653
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
Света7415Roman Mejtesв WPF есть 3 состояния видимости.
1ое Collapsed - элемент управления невидим и если не был виден, он не загружен, размеры и положение на экране не вычисляются.
А это что? (мышка над)
Не понял ваш вопрос, если элемент Collapsed, то мышку на него навести невозможно, он не обрабатывает Tunel события, по этому сделать триггер типа IsMouseOver для Collapsed элемента не возможно, точка.
...
Рейтинг: 0 / 0
15.12.2015, 16:16
    #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
15.12.2015, 16:31
    #39128800
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой вопрос (наверное, сам ответа не знаю!)
Света7415,

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


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