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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слияние ядра приложения с GUI, GUI 
:(
    Опции темы
Compositum
Дата 30.3.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



не то, чтобы затруднение... Я ожидал, что в бленде, после создания GUI, идет собственно последняя стадия - реализация интерфейса. Теперь понял - эта стадия делается лишь в Visual Studio после экспорта проекта, созданного в блэнде. 
Аке, ну хоть так... 

п.с. Кстати,  3D-графику где лучше делать? Я так понимаю, что писать ее вручную посредством XAML - повеситься можно, а ежели сделать а AutoCAD - так оттуда нет экспорта в XAML. Как решаете такое?
PM   Вверх
thomas
Дата 30.3.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Да забыл подчеркнуть.
На этапе разработки слоя представления(все детали проанализированны, обговорены и задокументированны):
Работа дизанейра первична.
Работа программиста вторична.

Поясню, нельзя написать код обработчиков событий не имеея контролов.

Дизайнер нарисовал, Blend записал это кодом XAML в проект.
Теперь программист, открыв проект в студии, видит GUI и может кодировать используемые там контролы.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Compositum
Дата 30.3.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Цитата(thomas @ 30.3.2009,  23:39)
Дизайнер нарисовал, Blend записал это кодом XAML в проект.
Теперь программист, открыв проект в студии, видит GUI и может кодировать используемые там контролы.

Т.е. по вашему выходит, что программист должен сидеть и ждать, пока дизайнер создаст GUI?
Т.о. вы завязываетесь на конкретный вариант GUI. А ежели со временем потребуется переделать GUI на другой, позаменяв контролы более новыми аналогами? Вы будете перекраивать ядро? ИМХО ядро вообще, не должно знать, посредством каких контролов представлен GUI. А ежели мы ждем работу дизайнера, значит планируем завязаться на конкретные контролы представленного им GUI?
Поправьте меня, ежели я вас не верно понял...
PM   Вверх
Partizan
Дата 30.3.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



Цитата

п.с. Кстати,  3D-графику где лучше делать? Я так понимаю, что писать ее вручную посредством XAML - повеситься можно, а ежели сделать а AutoCAD - так оттуда нет экспорта в XAML. Как решаете такое


Насколько я знаю, многие рисуют в редакторах векторной графики типа Adobe Illustrator и т.п. Оттуда можно в xaml экспорт устроить...

Добавлено через 2 минуты и 20 секунд
Цитата

Т.е. по вашему выходит, что программист должен сидеть и ждать, пока дизайнер создаст GUI?


Compositum, да нет...thomas озвучил очевидную идею, которой сквозит весь топик - объединение логики и представления проходят последним этапом )

по-моему это очевидно smile


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


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Цитата(Partizan @ 30.3.2009,  23:48)
Цитата

п.с. Кстати,  3D-графику где лучше делать? Я так понимаю, что писать ее вручную посредством XAML - повеситься можно, а ежели сделать а AutoCAD - так оттуда нет экспорта в XAML. Как решаете такое


Насколько я знаю, многие рисуют в редакторах векторной графики типа Adobe Illustrator и т.п. Оттуда можно в xaml экспорт устроить...

я не о "рисовании", а именно о создании полноценных 3D-объектов с возможностью их вращения, масштабирования и т.п.

Добавлено через 1 минуту и 44 секунды
Цитата(Partizan @ 30.3.2009,  23:48)
объединение логики и представления проходят последним этапом 

Всё, вроде до меня дошло =))))))
PM   Вверх
Partizan
Дата 31.3.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



Цитата

я не о "рисовании", а именно о создании полноценных 3D-объектов с возможностью их вращения, масштабирования и т.п.


тут я вряд ли чем-то смогу помочь...ибо не приходилось...


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


Опытный
**


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

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



Цитата

я не о "рисовании", а именно о создании полноценных 3D-объектов с возможностью их вращения, масштабирования и т.п.

Есть плагин для 3DS Max, который конвертит в XAML. Вроде даже не один.
PM MAIL   Вверх
xxxSeVa
Дата 31.3.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Compositum, да нет...thomas озвучил очевидную идею, которой сквозит весь топик - объединение логики и представления проходят последним этапом )
по-моему это очевидно  

Правильные идеи у Compositum'a.Логику и представления можно и нужно делать отдельно.В Prism комманды и события не привязаны к VisualTree и это позволяет создавать слои независимо друг от друга.
PM MAIL   Вверх
Partizan
Дата 31.3.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



xxxSeVa, давай-ка развёрнутый ответ smile

Цитата

Правильные идеи у Compositum'a.Логику и представления можно и нужно делать отдельно


Топик читал вообще? Кто-нибудь это оспаривал?

Цитата

В Prism комманды и события не привязаны к VisualTree


Примеров нам! Тут, я думаю количество Prism-овцев стремится к нулю...так что давай примерами поясняй


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


Новичок



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

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



Для начала давайте договоримся, что я никому и ничего не должен.
Цитата

Поясню, нельзя написать код обработчиков событий не имеея контролов.

Тут в соседней ветке спрашивали,как создать навороченный грид с тулбаром и строкой состояния.
Кроме одно общего, с ViewModel автоматически подгружается зарегистрированный для него тулбар.
Один из вариантов
Код

 <StackPanel Orientation="Horizontal">
        <Button Margin="2" cal:Click.Command="{Binding NextCommand.Value}" Content=">" ></Button>
        <Button Margin="2" cal:Click.Command="{Binding PrevCommand.Value}" Content="<"></Button>
        <!-- etc -->
    </StackPanel>

Код у него простейший
Код

 public class ToolBarViewModel
    {
        public ToolBarViewModel()
        {
            this.NextCommand = new ObservableObject<ICommand>();
            this.PrevCommand = new ObservableObject<ICommand>();
            // etc
        }
        public ObservableObject<ICommand> NextCommand
        {
            get; private set;
        }

        public ObservableObject<ICommand> PrevCommand
        {
            get; private set;
        }
    }

Во ViewModel задаем обработчики команд
Код


public class ViewModelBase
{
        public ViewModelBase(ToolBarViewModel toolBar)
        {
               toolBar.NexCommand.Value = new  DelegateCommand<object>(CanNext,NextCommand);      
               //etc
        }

        private virtual bool CanNext(object current) {}
        private virtual void NextCommand(object current) {}
}

Для строки состояния используем события и тоже делаем ее независимой.В итоге мухи и котлеты не пересекаются
PM MAIL   Вверх
Partizan
Дата 31.3.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



Цитата

Для начала давайте договоримся, что я никому и ничего не должен.


Нет проблем, договорились..

Цитата

В Prism комманды и события не привязаны к VisualTree и это позволяет создавать слои независимо друг от друга. 


WPF он и в Африке WPF...это не особенности Prism, который, насколько я понял, является обычным Pascal-биндингом...
События привязаны к типу...а UI-объекты соответствующих типов лежат в VisualTree...очень странно говорить, что события UI объектов не привязаны к VisualTree  smile 


Всю логику на команды не повесишь... 
Плюс таким образом Вы завязываетесь на WPF UI...
UPD:Такое сопряжение гуя с логикой тоже имеет право на жизнь, но речь тут шла не совсем о том....


AnyWay - код - не работа UI-дизайнера...
код - работа кодера...

Это сообщение отредактировал(а) Partizan - 31.3.2009, 19:36


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


Новичок



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

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



Цитата

WPF он и в Африке WPF...это не особенности Prism, который, насколько я понял, является обычным Pascal-биндингом...
События привязаны к типу...а UI-объекты соответствующих типов лежат в VisualTree...очень странно говорить, что события UI объектов не привязаны к VisualTree   

Именно особенности Prism.Команды и события имеют с обычными только названия.Про Event Aggreragtor можно прочитать у Фаулера.С UI он никак не связан
Цитата

Плюс таким образом Вы завязываетесь на WPF UI...
UPD:Такое сопряжение гуя с логикой тоже имеет право на жизнь, но речь тут шла не совсем о том....

Эти паттерны придуманы не мной, и для одной простой причины - отделить представление,уйти от спагетти кода и как следствие не ждать дизайнеров.
На UI завязка слабая,можно иметь общий код для WPF и SL,а микса с WinForms есть SCSF со сходным подходом.
Цитата

Всю логику на команды не повесишь... 

Например?Только для бизнес-приложений

PM MAIL   Вверх
Partizan
Дата 1.4.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



Цитата

Эти паттерны придуманы не мной, и для одной простой причины - отделить представление,уйти от спагетти кода и как следствие не ждать дизайнеров.
На UI завязка слабая,можно иметь общий код для WPF и SL,а микса с WinForms есть SCSF со сходным подходом.


xxxSeVa, Да это понятно...но опять повторюсь...речь тут была немного о другом...о том, что код должен писать кодер, а дело дизайнера - нарисовать XAML и всё....

Цитата

объединение логики и представления проходят последним этапом )


Да, подход приведённый выше позволяет это обойти...но его реализация дело кодера smile Дело дизайнера - всего лишь привязывать UI к командам...

Цитата

Например?Только для бизнес-приложений


Окей...как мы поступим, когда нам важен OriginalSource, от которого пошло событие?




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


Новичок



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

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



Цитата

Окей...как мы поступим, когда нам важен OriginalSource, от которого пошло событие?

Здесь нет ничего сложного.Событие может иметь параметром любой класс
Код

public class TestEvent : CompositePresentationEvent<TestObject>
{
}

public class TestObject
{
    public object Sender { get; set; }
}

TestEvent testEvent = this.eventAggregator.GetEvent<TestEvent>(); 

TestObject testObject = new TestObject ();
testObject.Sender = this;
testEvent.Publish(testObject);


К слову, в отличии от SCSF,где из песни слов не выбросишь, EventAggregator может использоваться и в WinForms
Еще примеры будут?
PM MAIL   Вверх
Partizan
Дата 1.4.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



xxxSeVa, я о стандартных событиях WPF

Добавлено через 9 минут и 45 секунд
xxxSeVa, я, кстати, сначала подумал про Delphi Prism

соглашусь, что Prism из P&P придаёт больше гибкости...


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


 




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


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

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