Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка контрола, Control = TextBox+Button 
:(
    Опции темы
oldshaman
Дата 18.3.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Всем здравствуйте.
В WPF новичек, потому прошу помочь советом. Если кто видел 1С (и 7.7, и 8.х), там есть такой контрол - ПолеВвода. Смысл в том, что мы в режиме проектирования (но можно и потом в рантайме) устанавливаем ему некий тип значения - например, число, строка, дата, или ссылку на имеющийся в приложении класс (Документ.РасходнаяНакладная, Справочник.Контрагенты) и тп, а он, соответственно, при нажатии на кнопку выбора, либо показывает маленький калькулятор, календарик, либо открывает форму выбора ссылочного класса с гридом. То есть в общем, в упрощенном варианте, без выбора типа значения в рантайме, TextBox+Button. 

Я сделал наследника от Control, два DependancyProperty - ValueType с типом Type (или лучше string?) и Value (object), ControlTemplate в XAML, команду ButtonSelect, которую привязал к кнопке в шаблоне, эта команда вызывает маршрутизированное событие BeginSelect, на которое клиентский код, использующий контрол, может подписываться прямо в XAML. Еще надо объявить, конечно, делегат для указания метода, как, собственно, контрол должен действовать в зависимости от установленного типа значения.  А может, прямо в нем через switch-case сделать жесткую привязку для простых типов, а для ссылочных, отображающих сущности, использовать шаблон метода, который искать в сборке по имени класса?

В принципе, по MSDN и книжке Мэтью Макдональда разобраться вполне можно, но не хотелось бы лишних граблей, поэтому вопрос: я вообще в правильном направлении двигаюсь? 
PM MAIL   Вверх
Idsa
Дата 18.3.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Насколько я понимаю, Вам необходимо создать контрол, который будет умело комбинировать готовые контролы. В этом случае наследоваться удобнее от UserControl (Add -> New Item -> UserControl).


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
oldshaman
Дата 18.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Нет, Idsa, не совсем так. 
Я пробовал сначала делать UserControl, но в MSDN перечислены ограничения такого подхода, одно из них - поддержка тем и настройка элемента через ControlTemplate. Да и логически это все-таки не комбинация конрролов, а другой элемент, то есть, в соответствии с абстракцией WPF об отделении логики от представления - это нечто, что умеет принимать тип класса в качестве типа значения, а потом хранить ссылку на какой-то объект этого типа. Ну и соответственно, как-то отображать значение, на которое ссылается. Кнопка и текстбокс - просто самая простая и очевидная реализация такой задачи. 
В принципе, можно, конечно, взять и положить на форму эти элементы, и на каждый из них повесить соответствующие обработчики. Но как-то это совсем грубо, хочется создать именно контрол, потому что это во-первых, законченная логическая сущность, а во-вторых, просто привык в 1С такими штуками пользоваться.
Есть, например, объект Order, у него есть поле Customer, я на форму кидаю такой контрол, говорю в XAML, что тип значения у него - class Customer, а он 1) при начале выбора (это может быть щелчок по нему, HotKey или начало ввода в TextBox, подразумевающее автозаполнение по первым символам) открывает форму (окно, список, грид, в общем коллекцию из базы) со списком этих клиентов, обрабатывая выбор в этом списке; 2) как-то понятно для пользователя отображает выбранное значение, например, с помощью Customer.ToString().

Наверное, я как-то непонятно объясняю :(
PM MAIL   Вверх
Partizan
Дата 18.3.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



oldshaman, на самом деле тут проще всего для типов .NET иметь какие-то предопределённые значения, а для пользовательских типов ввести атрибуты.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
oldshaman
Дата 19.3.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Вот, нарисовал скриншоты, может, так проще будет понять, что от этого контрола требуется.

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  Control.rar 144,04 Kb
PM MAIL   Вверх
Partizan
Дата 19.3.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



oldshaman, UserControl - это то, что вам нужно smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
fabio25
Дата 6.4.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.4.2009

Репутация: нет
Всего: нет



посмотри UZTO 'www.UZTO.NetDec.uz'
Там InputControl
PM MAIL   Вверх
oldshaman
Дата 17.4.2009, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



fabio25, спасибо за ссылку! 
С контролом-то я уж давно разобрался, а вот сама эта система узбекская - офигеть! Такое ощущение, что они не просто передрали с 1С всю систему, но даже и специально старались скопировать то, что в .Net в принципе сделать можно гораздо лучше.
PM MAIL   Вверх
Idsa
Дата 17.4.2009, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Цитата(oldshaman @  17.4.2009,  11:10 Найти цитируемый пост)
а вот сама эта система узбекская - офигеть!

Про какую систему речь?
Я, кстати, сейчас (вот прямо сейчас smile ) занимаюсь созданием еще одной такой системы. Готовьтесь ;)


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
fabio25
Дата 17.4.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.4.2009

Репутация: нет
Всего: нет



Цитата(oldshaman @  17.4.2009,  07:10 Найти цитируемый пост)
то в .Net в принципе сделать можно гораздо лучш

А моможеш по подроблнее

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.