Здравствуйте, aloch, Вы писали:
A>Маркетологчсеки. A>Очень хочется HTMLayout для .Net (2.0) — т.е. без Native C++. Если этого не будет, то WPF — победит (когда не будет W2k/win9x)
А вы не боитесь использовать класс FileStream, а то он к native filesystem driver обращается, который небось аж на Си написан?
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, dimzon, Вы писали:
D>>Сочетанию SELECT + OPTION в WPF наверно соответствует какой-нить потомок ItemControl и набор его Item-ов.
A>Тут суть в том, что CSS поддерживает любые сочетания, а не только заранее предопределённые.
Суть в том что CSS тоже далеко не любые поддерживает. По существу с примером из жизни возразить можете?
Здравствуйте, dimzon, Вы писали:
D>Суть в том что CSS тоже далеко не любые поддерживает. По существу с примером из жизни возразить можете?
Да запросто: 'div > span[id~='45'] > h1:nth-child(5n+4) b' что означает
все <b> являющиеся прямыми или косвенными детьми h1 среди
всех <h1> являющихся прямыми детьми с индексом, дающим при делении на пять четыре, span, с атрибутом id содержащим разделённые пробелами значения одно из которых '45' среди
всех div
Здравствуйте, dimzon, Вы писали:
CS>>WPF по своему масштабу это имплементация некоего глобального принципа. D>Да! Причём XAML это лишь часть WPF. WPF по своей сути это что-то вроде сверхнавороченного Swing-а а XAML это просто некоторый формат для сериализации/десериализации (причём ПРОИЗВОЛЬНЫХ объектов)
Да ты наверное прав, WPF это такой Swing.
Тогда тем более почему он "могильщик" htmlayout?
CS>>Скажем вот такую вот простую конструкцию
CS>>
CS>>Я не знаю как воспроизвести в XAML. Буду признателен если мне знатоки покажут как. D>Ну конкретно для этого примера. Сочетанию SELECT + OPTION в WPF наверно соответствует какой-нить потомок ItemControl и набор его Item-ов. D>У ItemControl есть 2 свойства — Style и ItemStyle — вот они эти стили. Причём свойство ItemStyle можно установить ИЗ свойства Style (через стиль можно установить практически ЛЮБОЕ свойство в отличии от HTML). А :focus и :current разруливаются триггерами. Я ответил на ваш вопрос?
Нет, ты не ответил на вопрос.
Как описать на XAML "если select в фокусе то его непосредственный child-option в состоянии current имеет стиль B".
Подозреваю что никак. В общем это риторический вопрос.
XAML он для редактирвания в WYSIWYG средах разработки сделан (Microsoft® Expression®).
Отсюда его специфика — только простые и плоские конструкции. Это фактически inline styles в html/css, во всяком случае изначально.
CS>>Ну и напоследок.
CS>>WPF это managed code. Т.е. не везде, не для всего и не на всех Windows версиях работает. htmlayout это native code, может работать как в managed средах .NET и Java (кстати) так и в сугубо нативных приложениях.
D>ИМХО наступает время managed code!
Тебя обманули. WPF core это native code. Про Vista говорили тоже что она вся managed будет.
И вообще про "наступает время managed code" — в "священные войны".
Здравствуйте, aloch, Вы писали:
A>Здравствуйте, c-smile, Вы писали:
A>Маркетологчсеки.
A>Очень хочется HTMLayout для .Net (2.0) — т.е. без Native C++. Если этого не будет, то WPF — победит (когда не будет W2k/win9x)
Еще раз. WPF core (например XAML renderer) написан в native code.
htmlayout это в принципе renderer того же уровня — просто другой входной язык и структура DOM.
Говорить "хочу все managed" это безграмотно технически.
"Хочу все компоненты в технологиях оптимальных для их исполнения" — это уже ближе к теме.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, aloch, Вы писали:
A>>Здравствуйте, c-smile, Вы писали:
A>>Маркетологчсеки.
A>>Очень хочется HTMLayout для .Net (2.0) — т.е. без Native C++. Если этого не будет, то WPF — победит (когда не будет W2k/win9x)
CS>Еще раз. WPF core (например XAML renderer) написан в native code. CS>htmlayout это в принципе renderer того же уровня — просто другой входной язык и структура DOM.
Меня наверное не совсем поняли. Под "без Native C++" я имел в виду, "без использования Native C++ для прикручивания HTMLayout к приложению", т.е. сейчас загрузив SDK с сайта terrainformatica.com я не могу сразу использовать HTMLayout в приложении, написанном на C#/VB.Net. Я знаю, что есть обертки (NABU Library) от сторонних поставщиков. Но:
> Почему в компоненте HtmlView не работают некоторые behavior'ы, которые
> есть в HTMLayout? Например, expandable-list, collapsible-list. Нельзя
> ли делегировать эти behavior'ы самой htmlayout.dll ?
Не работают, потому что их нет в HTMLayout. Они распространяются в
виде Си++ кода (файлы расположены в папке \include\behaviors\),
который должен быть подключён к проекту. К .Net проекту его,
естественно, подключить нельзя.
На данный момент в обёртке есть аналоги для
behavior_accesskeys.cpp
behavior_collapsible_by_icon.cpp
behavior_hyperlink.cpp
behavior_tabs.cpp
Это как раз о том "Native C++", о котором я говорил.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, dimzon, Вы писали:
CS>>>WPF по своему масштабу это имплементация некоего глобального принципа. D>>Да! Причём XAML это лишь часть WPF. WPF по своей сути это что-то вроде сверхнавороченного Swing-а а XAML это просто некоторый формат для сериализации/десериализации (причём ПРОИЗВОЛЬНЫХ объектов)
CS>Да ты наверное прав, WPF это такой Swing. CS>Тогда тем более почему он "могильщик" htmlayout?
Потому что одной из его фич является возможность декларативного задания UI. Именно эта фича — причина использования HtmlLayout в 80% случаев. разве нет.
CS>>>Скажем вот такую вот простую конструкцию
CS>>>
CS>>>Я не знаю как воспроизвести в XAML. Буду признателен если мне знатоки покажут как. D>>Ну конкретно для этого примера. Сочетанию SELECT + OPTION в WPF наверно соответствует какой-нить потомок ItemControl и набор его Item-ов. D>>У ItemControl есть 2 свойства — Style и ItemStyle — вот они эти стили. Причём свойство ItemStyle можно установить ИЗ свойства Style (через стиль можно установить практически ЛЮБОЕ свойство в отличии от HTML). А :focus и :current разруливаются триггерами. Я ответил на ваш вопрос?
CS>Нет, ты не ответил на вопрос.
CS>Как описать на XAML "если select в фокусе то его непосредственный child-option в состоянии current имеет стиль B". CS>Подозреваю что никак. В общем это риторический вопрос.
повторяю ещё раз — в WPF нету элемента SELECT поэтому никак если говорить про ItemControl то надо объявить 2 стиля:
1) стиль для элемента (внутреннего элемента) когда ItemControl в фокусе. через тригера разрулить отмеченный/не отмеченный
2) стиль для самого ItemControl-а в котором с помощью триггера при установке свойства Focused устанавливать значение ItemStyle в стиль, определённый в 1)
Теперь понятно???
CS>XAML он для редактирвания в WYSIWYG средах разработки сделан (Microsoft® Expression®). CS>Отсюда его специфика — только простые и плоские конструкции. Это фактически inline styles в html/css, во всяком случае изначально.
Не совсем. Повтрюсь — XAML это по большому счёту формат сериализации данных. Он десериализируется XAMLReader-ом и в результате имеем готовое дерево. Добавляем новый класс (непример потомок контрола) в код, используем тег в XAML и наш класс точно так-же поднимется в дереве равно как и стандартные.
CS>>>Ну и напоследок. CS>>>WPF это managed code. Т.е. не везде, не для всего и не на всех Windows версиях работает. htmlayout это native code, может работать как в managed средах .NET и Java (кстати) так и в сугубо нативных приложениях. D>>ИМХО наступает время managed code! CS>Тебя обманули. WPF core это native code. Про Vista говорили тоже что она вся managed будет.
Не совсем. Там очень маленький фрагмент для оптимизации + при установке для оптимизации происходит обработка через ngen всех managed-сборок.
CS>И вообще про "наступает время managed code" — в "священные войны".
Насчёт войн — спорить не буду но рекомендую посмотреть статистику по СЕРЬЁЗНЫМ проектам уровня предприятия. Все сервера приложений — 90% либо J2EE либо .NET. Бизнес-код в основном пишут на Managed. Тот же самый 1С — там тоже Managed.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, dimzon, Вы писали:
D>>Суть в том что CSS тоже далеко не любые поддерживает. По существу с примером из жизни возразить можете?
A>Да запросто: 'div > span[id~='45'] > h1:nth-child(5n+4) b' что означает
A>все <b> являющиеся прямыми или косвенными детьми h1 среди A>всех <h1> являющихся прямыми детьми с индексом, дающим при делении на пять четыре, span, с атрибутом id содержащим разделённые пробелами значения одно из которых '45' среди A>всех div
A>Покажи мне это в WPF.
Это не ЖИЗНЕННЫЙ и сугубо синтетический пример. Покажи мне его use-case в первую очередь.
Здравствуйте, aloch, Вы писали:
A>Это как раз о том "Native C++", о котором я говорил.
Как автор NABU Library могу сказать следующее. Библиотека поддерживает написание behavior на чистом .Net. То есть при желании, владея C#/VB.Net можно прикрутить всё что угодно.
Полезные behaviors на C# написанные не мной включаются в библиотеку без особой волокиты, есть прецеденты. То есть я, конечно,н е отрицаю что часть функциональности из SDK отсутствует, но вот чтобы её восполнить Си++ не нужен совсем. Нужен С# и некоторое желание.
Здравствуйте, dimzon, Вы писали:
A>>Да запросто: 'div > span[id~='45'] > h1:nth-child(5n+4) b' что означает
A>>все <b> являющиеся прямыми или косвенными детьми h1 среди A>>всех <h1> являющихся прямыми детьми с индексом, дающим при делении на пять четыре, span, с атрибутом id содержащим разделённые пробелами значения одно из которых '45' среди A>>всех div
A>>Покажи мне это в WPF.
D>Это не ЖИЗНЕННЫЙ и сугубо синтетический пример. Покажи мне его use-case в первую очередь.
А это уже прыжок в сторону use-case могу привести без проблем. Скажем у меня есть таблица (a.k.a. GridView) в которой пользователи. В HTML таблица одна, но считай стили построены так как будто таблиц много разных.
А если я ещё хочу её при печати по-другому раскрасить... то мне поможет такая фича CSS как @media. Пишу
@media print
{
}
и указываю внутри альтернативные стили. Могу создавать произвольные новые media и указывать их имена, скажем могу сделать @media hi-contrast и переключать рендеринг без перезагрузки HTML.
Вообще много чего могу...
Могу указывать @media russian и
Здравствуйте, dimzon, Вы писали:
CS>>Да ты наверное прав, WPF это такой Swing. CS>>Тогда тем более почему он "могильщик" htmlayout? D>Потому что одной из его фич является возможность декларативного задания UI. Именно эта фича — причина использования HtmlLayout в 80% случаев. разве нет.
"декларативный UI" это одна из фич. Для кого-то основная для кого-то нет.
Я знаю что одна уважаемая фирма например активно совмещает декларативность с динамической генерацией UI — нечто типа внутреннего CGI.
CS>>Как описать на XAML "если select в фокусе то его непосредственный child-option в состоянии current имеет стиль B". CS>>Подозреваю что никак. В общем это риторический вопрос. D>повторяю ещё раз — в WPF нету элемента SELECT поэтому никак если говорить про ItemControl то надо объявить 2 стиля: D>1) стиль для элемента (внутреннего элемента) когда ItemControl в фокусе. через тригера разрулить отмеченный/не отмеченный D>2) стиль для самого ItemControl-а в котором с помощью триггера при установке свойства Focused устанавливать значение ItemStyle в стиль, определённый в 1)
D>Теперь понятно???
Нет не понятно.
Нет там select но есть listbox. Вот для него и его items можешь привести пример на XAML?
Если не получится для listbox то для любого другого элемента, т.е.
как в XAML стилях и тригерах выглядит следующее:
"если элемент X в фокусе то его непосредственный child типа Y в состоянии current имеет стиль S"
CS>>И вообще про "наступает время managed code" — в "священные войны". D>Насчёт войн — спорить не буду но рекомендую посмотреть статистику по СЕРЬЁЗНЫМ проектам уровня предприятия. Все сервера приложений — 90% либо J2EE либо .NET. Бизнес-код в основном пишут на Managed. Тот же самый 1С — там тоже Managed.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, aloch, Вы писали:
A>>Это как раз о том "Native C++", о котором я говорил.
A>Как автор NABU Library могу сказать следующее. Библиотека поддерживает написание behavior на чистом .Net. То есть при желании, владея C#/VB.Net можно прикрутить всё что угодно. A>Полезные behaviors на C# написанные не мной включаются в библиотеку без особой волокиты, есть прецеденты. То есть я, конечно,н е отрицаю что часть функциональности из SDK отсутствует, но вот чтобы её восполнить Си++ не нужен совсем. Нужен С# и некоторое желание.
Роман, может имеет смысл завернуть все behaviors в отдельную native dll c внешней функцией CreateBehavior() и звать ея из managed в HLN_ATTACH_BEHAVIOR?
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, dimzon, Вы писали:
D>> Тот же самый 1С — там тоже Managed.
A>Это бред и дезинформация! Никакого .Net атм нет! Там Си++ и СОМ!!!!
Уважаемый, вы не совсем правы. Я имел ввиду что прикладной код, разрабатываемый прикладными программистами компилируется в байт-код и исполняется виртуальной машиной. Да, это ну Java-байткод и не MSIL, но тем не менее это байткод и виртуальная машина. Для простоты я называю сочетание "байткод + VM" — managed, по сути то одно и то-же
Ну и вспоминаем всякие PHP, Perl и.т.п. Там вроде тоже идёт речь о переводе новых версий на VM
В таком ключе со мной согласны что managed наступает по всем фронтам?
Здравствуйте, c-smile, Вы писали:
CS>Нет там select но есть listbox. Вот для него и его items можешь привести пример на XAML? CS>Если не получится для listbox то для любого другого элемента, т.е.
CS>как в XAML стилях и тригерах выглядит следующее: CS>"если элемент X в фокусе то его непосредственный child типа Y в состоянии current имеет стиль S"
Ну например вот. Значение ItemContainerStyle при желании можно присваивать через Style ListBox-а
Здравствуйте, dimzon, Вы писали:
CS>>как в XAML стилях и тригерах выглядит следующее: CS>>"если элемент X в фокусе то его непосредственный child типа Y в состоянии current имеет стиль S"
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, dimzon, Вы писали:
A>А это уже прыжок в сторону use-case могу привести без проблем. Скажем у меня есть таблица (a.k.a. GridView) в которой пользователи. В HTML таблица одна, но считай стили построены так как будто таблиц много разных. A>
A><html>
A> <head>
A> <style>
A> table[id='users']
A> {
A> background-color: azure;
A> }
A> table[id='users'] > tr > td
A> {
A> padding: 0.5em;
A> border: solid 2px blue;
A> }
A> table[id='users'] > tr > td:nth-child(1)
A> {
A> padding: 0px;
A> }
A> table[id='users'] > tr[access-rights~='write'] > td
A> {
A> border: solid 2px red;
A> }
A> table[id='users'] > tr[access-rights~='backup'] > td
A> {
A> border: solid 2px orange;
A> }
A> table[id='users'] > tr[access-rights~='write'] > td:nth-child(1) > div
A> {
A> foreground-image: url(http://www.rsdn.ru/images/tree/frs.gif);
A> width: 32px;
A> height: 16px;
A> }
A> </style>
A> </head>
A> <body>
A> <table id='users'>
A> <tr access-rights='read write'>
A> <td><div></div></td><td>Admin</td><td>System Administrator</td>
A> </tr>
A> <tr access-rights='read'>
A> <td><div></div></td><td>User</td><td>User</td>
A> </tr>
A> <tr access-rights='read backup'>
A> <td><div></div></td><td>Backup Operator</td><td>Backup operator</td>
A> </tr>
A> </table>
A> </body>
A></html>
A>
Ок, понял, всё решается через стили и темплейты с тригерами. Единственное что необходимо это для обработки конструкции ~= придётся написать свою реализацию IConverter.
A>А если я ещё хочу её при печати по-другому раскрасить... то мне поможет такая фича CSS как @media. Пишу A>
A>@media print
A>{
A>}
A>
A>и указываю внутри альтернативные стили. Могу создавать произвольные новые media и указывать их имена, скажем могу сделать @media hi-contrast и переключать рендеринг без перезагрузки HTML. A>Вообще много чего могу...
Всё это решается через динамические ресурсы и/или Binding
[]
D>Ок, понял, всё решается через стили и темплейты с тригерами. Единственное что необходимо это для обработки конструкции ~= придётся написать свою реализацию IConverter.
Ага, а для еще каких-нибудь конструкций "придется написать свою реализацию IXXX" Мсье, как вижу, знает и понимает толк в извращениях
A>>А если я ещё хочу её при печати по-другому раскрасить... то мне поможет такая фича CSS как @media. Пишу A>>
A>>@media print
A>>{
A>>}
A>>
A>>и указываю внутри альтернативные стили. Могу создавать произвольные новые media и указывать их имена, скажем могу сделать @media hi-contrast и переключать рендеринг без перезагрузки HTML. A>>Вообще много чего могу...
D>Всё это решается через динамические ресурсы и/или Binding
Угу, на свете вообще все решается. Только кое-что решается через пляски с бубнами Вместо того, чтобы юзать нормальный HTMLayout, вы упорно указываете на какую-то полусырую каку, уж извините. А когда вам приводят примеры того, с чем кака справиться не может — быстренько отваливаете в сторону
З.Ы. Вот только не надо кричать, что "кака с этим не справляется, потому что это концептуально неправильно" и пр. Deal?
<< Рабство не отменено — оно сменилось 8-часовым рабочим днем. >>
Здравствуйте, dimzon, Вы писали:
CS>>как в XAML стилях и тригерах выглядит следующее: CS>>"если элемент X в фокусе то его непосредственный child типа Y в состоянии current имеет стиль S"
D>Ну например вот. Значение ItemContainerStyle при желании можно присваивать через Style ListBox-а
[код поскипан]
Вах, мля! Нет, не так. ВАХ, МЛЯЯЯЯ! Это что вообще было? Страшное у@$ище лесное сами_знаете_что — вот что это было. Вполне в духе одной уважаемой фирмы — решать простые задачи через жопу.