MK>минусы индивидуального характера.
Очень хочется, чтобы вы были правы, но, к сожалению, это не так. Большинство описанных недостатков касаются основ WPF. Вряд ли удастся их исправить просто фиксами в будущих версиях. Framework 4 это подтверждает.
Здравствуйте, Alexander Polyakov, Вы писали:
MK>>минусы индивидуального характера. AP>Очень хочется, чтобы вы были правы, но, к сожалению, это не так. Большинство описанных недостатков касаются основ WPF. Вряд ли удастся их исправить просто фиксами в будущих версиях. Framework 4 это подтверждает.
Да никто не заставляет, собственно. Я только призвал к объективности. Жаль, что x64 оценил только отрицательные стороны, видимо это ему и было нужно.
Здравствуйте, MxKazan, Вы писали:
C>>Создаваемые объекты оборачиваются в проксики, и при выполнении метода отслеживается к каким объектам (и коллекциям) были обращения. Этого достаточно, чтобы отследить зависимости. MK>Прикольно да. Хотя, в принципе, если будут обращения к объектам, которые взаимосвязаны логически, но в коде это никак не выражено, то GUI в будущем и не заметит зависимости.
Ну так зависимости должны быть выражены в коде В принципе, не так уж много случаев, когда они не будут.
Здравствуйте, VladD2, Вы писали:
RO>>Всё правильно, только опечатка, вместо WPF должно было быть Qt.
VD>Ага. Только жаль, что приложения на нем получаютя убогими. Но в этом, очевидно, виноваты кривые руки...
Не жаль. Если разработчики настолько зациклены на майкрософтовских технологиях, которые работают только в одной ОС, то пусть плачут, колются и пишут и используют убогие приложения.
Здравствуйте, Cyberax, Вы писали:
C>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж.
В Swing-е оно сделано универсально
C>Скажем, как мне в таблице сделать удобное редактирование ячеек?
Известно как — выбирая нужную реализацию редактора содержимого ячейки через TableCellEditor.
C>Никак, так как угрёбищная система с editor'ами никуда не годиться.
Она очень гибка и универсальна. Ты имеешь дело только с текстовыми данными? А у меня к примеру в таблице отображаются и редактируются вектора. И концепция editor/renderer позволяет мне сделать это очень удобно.
C>Так же, нельзя нормально делать композитные контролы и т.п.
Что ты понимаешь под композитным контролом? Впервые слышу этот термин. Если это то, о чем я думаю, чем JPanel у примеру не подходит?
Социализм — это власть трудящихся и централизованная плановая экономика.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, LaPerouse, Вы писали:
I>>>Щас вот открыл мега-продукт, Идея 9.0.1, на первом же экране обнаружил артефакты, которые мы в своей дотнет прилаге не наблюдаем где то с первого релиза.
LP>>Какие артефакты? Скриншоты в студию.
I>Берешь и ресайзишь окна.
Мне нечего ресайзить. Я не пользуюсь Idea.
Социализм — это власть трудящихся и централизованная плановая экономика.
Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо.
Здравствуйте, mrTwister, Вы писали:
T>>>http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx C>>Недостаточно даже близко. T>Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо.
Нет. Тебе надо будет подписать метку на ВСЕ файлы в подкаталогах выбранного элемента. И при изменении выбранного элемента не забывать менять их.
Уже совсем не одна строчка. И это только для модельного примера. В реальных примерах всё сложнее.
Здравствуйте, LaPerouse, Вы писали:
C>>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж. LP>В Swing-е оно сделано универсально
Универсально через Ж.
C>>Скажем, как мне в таблице сделать удобное редактирование ячеек? LP>Известно как — выбирая нужную реализацию редактора содержимого ячейки через TableCellEditor.
Ага, и для активации редактора нужно на него щёлкнуть. При этом другой активный редактор выключается (т.е. редактор может быть только один). Попытки сделать редактор автоматически следующим за курсором приводят к жутким глюкам при клавиатурной навигации. И т.п.
В общем, у меня на SWING'е написано большое приложение. Так что не надо мне объяснять как оно всё круто работает. В HTMLayout, к примеру, этой проблемы нет в принципе.
И я уж не говорю, что те же таблицы в SWINGе сделаны криво. В JTable нет возможности сделать фиксированную колонку (заголовки рядов)! Или нельзя делать rowspan/colspan'ы.
C>>Так же, нельзя нормально делать композитные контролы и т.п. LP>Что ты понимаешь под композитным контролом? Впервые слышу этот термин. Если это то, о чем я думаю, чем JPanel у примеру не подходит?
Например, слайдер, у которого элемент, за который его таскают, работает как комбобокс. Про JPanel можешь мне не рассказывать
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, mrTwister, Вы писали:
T>>>>http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx C>>>Недостаточно даже близко. T>>Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо. C>Нет. Тебе надо будет подписать метку на ВСЕ файлы в подкаталогах выбранного элемента. И при изменении выбранного элемента не забывать менять их.
Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину. Добавив файл, при помощи события PropertyChanged оповестил бы интерфейс, что свойство Sum изменилось. Заранее отмечу, придирка что файл добавил бы кто-то иной без моего ведома не прокатывает, потому что, во-первых, это также можно решить одним оповещением, а во-вторых, врядли в этом случае меняется одна и та же коллекция.
И у меня возник такой вопрос: а как в Trellis решается ситуация, когда я не желаю, чтобы интерфейс реагировал на изменения в коллекции?
Здравствуйте, MxKazan, Вы писали:
MK>Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину. Добавив файл, при помощи события PropertyChanged оповестил бы интерфейс, что свойство Sum изменилось. Заранее отмечу, придирка что файл добавил бы кто-то иной без моего ведома не прокатывает, потому что, во-первых, это также можно решить одним оповещением, а во-вторых, врядли в этом случае меняется одна и та же коллекция.
Собственно я это и мел ввиду.
MK>И у меня возник такой вопрос: а как в Trellis решается ситуация, когда я не желаю, чтобы интерфейс реагировал на изменения в коллекции?
Мне вообще подобная магия не нравится, так как чуть шаг в сторону и она ломается. Чтобы починить — обычно начинаются пляски с бубном. Это я не про trellis а вообще про "магию".
Здравствуйте, MxKazan, Вы писали:
T>>>Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо. C>>Нет. Тебе надо будет подписать метку на ВСЕ файлы в подкаталогах выбранного элемента. И при изменении выбранного элемента не забывать менять их. MK>Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину.
Ещё хуже. Детали пользовательского интерфейса проносим в модель.
MK>Добавив файл, при помощи события PropertyChanged оповестил бы интерфейс, что свойство Sum изменилось. Заранее отмечу, придирка что файл добавил бы кто-то иной без моего ведома не прокатывает, потому что, во-первых, это также можно решить одним оповещением, а во-вторых, врядли в этом случае меняется одна и та же коллекция. MK>И у меня возник такой вопрос: а как в Trellis решается ситуация, когда я не желаю, чтобы интерфейс реагировал на изменения в коллекции?
Можно игнорировать определённые изменения, но это считается очень плохим решением.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, MxKazan, Вы писали:
T>>>>Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо. C>>>Нет. Тебе надо будет подписать метку на ВСЕ файлы в подкаталогах выбранного элемента. И при изменении выбранного элемента не забывать менять их. MK>>Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину. C>Ещё хуже. Детали пользовательского интерфейса проносим в модель.
Путаешь domain-model и view-model. Я говорил о второй.
MK>>Добавив файл, при помощи события PropertyChanged оповестил бы интерфейс, что свойство Sum изменилось. Заранее отмечу, придирка что файл добавил бы кто-то иной без моего ведома не прокатывает, потому что, во-первых, это также можно решить одним оповещением, а во-вторых, врядли в этом случае меняется одна и та же коллекция. MK>>И у меня возник такой вопрос: а как в Trellis решается ситуация, когда я не желаю, чтобы интерфейс реагировал на изменения в коллекции? C>Можно игнорировать определённые изменения, но это считается очень плохим решением.
Ну, вот например, мне по бизнесу нужно произвести множество изменений в коллекции, зачем мне отображать промежуточные состояния пользователю?
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, MxKazan, Вы писали:
T>>>>Недостаточно для чего? Для решения указанной задачи этого хватает за глаза. Из оверхеда — одна строчка кода в сеттере поля ViewModel — вызыать "OnPropertyChanged". И никакой магии не надо. C>>>Нет. Тебе надо будет подписать метку на ВСЕ файлы в подкаталогах выбранного элемента. И при изменении выбранного элемента не забывать менять их. MK>>Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину. C>Ещё хуже. Детали пользовательского интерфейса проносим в модель.
Судя по всему, ты незнаком с MVVM. Рекомендую ознакомиться.
Здравствуйте, MxKazan, Вы писали:
MK>>>Какая-то фигня. В MVVM я бы просто сделал свойство Sum, get-аксессор которого подсчитывал нужную величину. C>>Ещё хуже. Детали пользовательского интерфейса проносим в модель. MK>Путаешь domain-model и view-model. Я говорил о второй.
А я с Trellis'ом могу от второй вообще отказаться. В любом случае, тебе вручную придётся где-то вести вычисления и слежение. Неудобно.
MK>>>И у меня возник такой вопрос: а как в Trellis решается ситуация, когда я не желаю, чтобы интерфейс реагировал на изменения в коллекции? C>>Можно игнорировать определённые изменения, но это считается очень плохим решением. MK>Ну, вот например, мне по бизнесу нужно произвести множество изменений в коллекции, зачем мне отображать промежуточные состояния пользователю?
Для этого там есть более нормальные средства (STM), которые позволяют делать "транзакции". Т.е. ты делаешь какое-то изменение, и перерасчёт зависимостей запускается только при его успешном завершении. Кстати говоря, сюда ещё и undo/redo совершенно логически приделываются.
Здравствуйте, Cyberax, Вы писали:
MK>>Путаешь domain-model и view-model. Я говорил о второй. C>А я с Trellis'ом могу от второй вообще отказаться.
Ну можно вообще от всего отказаться в обработчике нажатия кнопки лазить в базу данных. View-Model — это очень полезная штука без относительно твоего примера с перерисовкой view, которая позволяет сконцентрировать логику пользовательского интерфейса в одном месте в тестируемом виде.