Re[13]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 19:01
Оценка: +4 -3
Здравствуйте, VladD2, Вы писали:

VD>Смотри как твоя терада отлично пододит? Просто универсальная демогогия.

VD>Что же ты сам то не ответил, например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п.?

Я тебе ответил более конкретно — никак. Какая из букв в этом слове тебе непонятна?

VD>Не уж то может быть, что предложение бредовое и предлагаемое просто не нужно?

VD>В общем, завязывай с демогогией и оскорблениями. До тебя здесь была нормальная здоровая атмосфера. Если у тебя плохое настроение, выпей пива, а не вымещай его на окружающим.

Самое интересное, что с автором мы уже давно разобрались. Даже на твой неуместный вопрос есть ли циклы в linq2db я дал однозначный ответ — нет. Про примеры на 1000 строк я тоже уже сказал, что заниматься этим не буду, у меня нет времени. Про копипастинг при создании групп контролов тоже упомянул. Но ты всё никак не успокоишся И при этом я же у тебя ещё и демагог и оскорбитель. Пипец

Впрочем, я знаю как в будущем решить эту проблемы. Нужно по-лучше настроить фильтр форумов и исключить оттуда Nemerle.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: AMMY - XAML с человеческим лицом
От: fddima  
Дата: 19.01.17 19:08
Оценка: 3 (1) +1
VD>Ну, так присоединяйся и помоги его сделать. В проект мы это заложили. Но нужно много и долго работать, чтобы все получилось как в проекте. Все делается через бэкэнды. Можно написать бэкэнд для LLVM, например. Когда будет Немерл на Нитре, можно будет бутстрапнуться на LLVM.
Это интересно, хотя я слышал об этом изначально. Я щас выпадаю в идл. Если вдруг забуду — просьба пнуть меня. Вообще думаю собрать свои хотелки/мыслишки и от этого отталкиваться. Короче это в отдельном топике/может лично. Короче не тут точно, тут пока это никому не интересно будет.

VD>Но лично у меня до этого вряд ли дойдут руки в ближайшее время.

Это всегда было понятно. Проделанная работа вашей команды ещё несколько лет назад была выше всяких похвал. Ammy же только подтверждает — что твои обзоры — не рекламная чепушень! Имхо — конкурентов у Нитры вообще нет как и не было. Я вижу проблему тока в привязке к дотнету. И мало материалов. Но это решится. Я люблю дотнет всей душой, но самые интересные программы на нём не сделать. Короче — я рад что не смотря на все невзгоды — ты остаешься верен своему делу.
Re: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 19.01.17 22:02
Оценка: 30 (1)
Здравствуйте, VladD2, Вы писали:

Нужен специальный синтаксис для стилей.
Думаю, что-то вроде такого
ColumnHeaderStyle: style for DataGridColumnHeader {
  Padding    = "30, 10"
  Background = $accentColor1
  Foreground = While
  FontSize   = 18
  FontWeight = Bold
}

= вместо : по тому что сеттер.
Код получается короче.
Плюс везде работает интеллисенс.
Имена свойств получаем из типа для которого делаем стиль.
А значения енумов из типа свойства.

Тоже самое с триггерами
trigger IsSelected == true {
  Foreground = Green
}

trigger Button.Click == "AddGuestButton" {
  ...
}

Выбор между Trigger и EventTrigger делаем на основе типа того на что вешаем триггер.
Все триггеры объединяем в коллекцию Triggers.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: AMMY - XAML с человеческим лицом
От: Evgeny.Panasyuk Россия  
Дата: 19.01.17 23:14
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>В общем, обоснуй необходимость этих самых циклов. Покажи примеры. Может уговорим ionoy добавить их поддержку. На Nitra это не сложно будет сделать. Пока что я не вижу в этом никакой необходимости.

VD>...
VD>В XAML, как я понимаю, никаких циклов нет. И никто даже не стремится добавить. Почему?

Например в QML есть Repeater — наверное кому-то было необходимо
Row {
    Rectangle { width: 10; height: 20; color: "red" }
    Repeater {
        model: 10
        Rectangle { width: 20; height: 20; radius: 10; color: "green" }
    }
    Rectangle { width: 10; height: 20; color: "blue" }
}

http://doc.qt.io/qt-5/images/repeater.png
Column {
    Repeater {
        model: ["apples", "oranges", "pears"]
        Text { text: "Data: " + modelData }
    }
}
Re[3]: AMMY - XAML с человеческим лицом
От: seregaa Ниоткуда http://blogtani.ru
Дата: 19.01.17 23:44
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Он же компилируется в xaml. Как цикл в xaml можно преобразовать?


В некоторых случаях можно развернуть цикл в compile-time. Для задач типа "добавить 10 кнопок" будет вполне достаточно.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[3]: Косяки с точки зрения бизнеса (+)
От: Evgeny.Panasyuk Россия  
Дата: 19.01.17 23:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это тоже какая-то надуманная причина. Если вдруг у него бизнес не удастся, то ежу понятно, что он выложит исходники в опенсорс.


Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.
Re[4]: Косяки с точки зрения бизнеса (+)
От: fddima  
Дата: 20.01.17 00:08
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.

Считай меня ежом — никогда с таким сочетанием букв не сталкивался. Хотя в целом смысл пожалуй что ясен.
Re[5]: Косяки с точки зрения бизнеса (+)
От: Evgeny.Panasyuk Россия  
Дата: 20.01.17 00:20
Оценка:
Здравствуйте, fddima, Вы писали:

F>никогда с таким сочетанием букв не сталкивался.


Встречается при разработке закрытых библиотек. Думаю используется и для других трудно-замещаемых инструментов для разработчиков (как у ТС).

F>Хотя в целом смысл пожалуй что ясен.


https://en.wikipedia.org/wiki/Source_code_escrow
Source code escrow is the deposit of the source code of software with a third party escrow agent. Escrow is typically requested by a party licensing software (the licensee), to ensure maintenance of the software. The software source code is released to the licensee if the licensor files for bankruptcy or otherwise fails to maintain and update the software as promised in the software license agreement.
...
The Blender graphics suite was released in this way following the bankruptcy of Not a Number Technologies
...

Re[6]: Косяки с точки зрения бизнеса (+)
От: fddima  
Дата: 20.01.17 00:25
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

F>>никогда с таким сочетанием букв не сталкивался.

EP>Встречается при разработке закрытых библиотек. Думаю используется и для других трудно-замещаемых инструментов для разработчиков (как у ТС).
Погуглить и я могу. Но за старания — всё равно спасибо. Не, вправду не сталкивался хотя по долгу службы моя работа просто попадает под nda/rca и всё. Поэтому до таких нюансов *пока* не докатились. Хотя нсверное докатимся — в этом году чот у всех голову унесло. Увы.
Re[7]: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 20.01.17 05:05
Оценка:
Здравствуйте, ionoy, Вы писали:

I>А можно пример, чтобы было от чего отталкиваться?


Например есть у нас массив доступных экшенов, который надо превратить в кнопки. Ты уже показал байндинг через ItemsControl, его вполне достаточно.
Re[14]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 07:21
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я тебе ответил более конкретно — никак. Какая из букв в этом слове тебе непонятна?


Так сделай. Или объясни почему не будешь делать.

IT>Самое интересное, что с автором мы уже давно разобрались.


Автор просто боится быть заклеванным такими как ты. По сему пытается обходить все острые углы.

IT>Даже на твой неуместный вопрос есть ли циклы в linq2db я дал однозначный ответ — нет.


А чем этот вопрос более не уместен чем твой?

Вопрос, конечно, риторический. Не нужны они там, вот и кажется тебе вопрос неуместным. Но ты же ведь окружающих учишь, что говорить "не нужны" нельзя. Так что вангую, что внятного ответа я так и не услышу. Сейчас начнется демагогия и продолжение врачевания мозга оппонентов.

Тебе ведь тоже ответили, что нет. Но с дури объяснили почему:

Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что они не нужны.

И дальше вместо конструктивного возражения или просто закрытия темы пошло хамство. Причем хамство в мою сторону, хотя я еще слова не прознес, т.е. на основе телепатии.

IT>Про примеры на 1000 строк я тоже уже сказал, что заниматься этим не буду, у меня нет времени.


Не нужно на 1000 строк. Просто пары строк и объяснение было бы достаточно. Ты в этой теме уже 100500 букв намолотил на наезды. Если ты их на дело потратил, то вопрос давно был бы решен, а тебе в ответ показали бы как тоже самое можно достичь на AMMY или признали бы, что ты прав.

Но никаких примеров не будет, так как просто нет задачи. Прсто есть кто-то для кого вокруг все молоток Разор. По этому не найдя гвоздей циклов в продукте находится фатальный недостаток.

Отсюда и наезды с переходами на личности.

IT>Про копипастинг при создании групп контролов тоже упомянул.


Это совершенно надуманный пример. Потому ты и показать его в коде боишься. Всем сразу станет очевидно, что он высосан из пальца.

IT>Но ты всё никак не успокоишся И при этом я же у тебя ещё и демагог и оскорбитель. Пипец


Может быть это я бегаю за тобой по форумам и пытаюсь объяснить как ты мне безразличен?

Ты приперся на этот форум. Во втором сообщении обосрал меня. А успокоиться не могу я?

Если бы ты пришел сюда с конструктивом, я бы с удовольствием обсудил твое предложение и встал бы на твою сторону, если бы оно оказалось дельным. Но ты пришел сюда с односложным вопросом, обхамил автора и меня, а потом на резонный вопрос зачем это надо развел демогогию с переходом на личности, так и не показав примера использования ожидаемой тобой фичей.

IT>Впрочем, я знаю как в будущем решить эту проблемы. Нужно по-лучше настроить фильтр форумов и исключить оттуда Nemerle.


Вот давно бы этим занялся, если не можешь конструктивно общаться. Еще я это AlexRK посоветовал бы. Я к тебе в форум linq2db не хожу чтобы тебя по унижать. Ну, и ты сюда дорогу забудь, раз не хочешь помочь или, хотя бы, общаться без наездов.

А раз пришел оставь тон нравоучений за дверью. Это технический форум. Вот тут рядом есть критика от bazis1
Автор: bazis1
Дата: 19.01.17
. Я с нем во многом не согласен, но это все же критика. Человек обосновывает свои мысли. И при этом, заметь, на личности не переходит.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 07:56
Оценка:
Здравствуйте, fddima, Вы писали:

F> Это интересно, хотя я слышал об этом изначально. Я щас выпадаю в идл. Если вдруг забуду — просьба пнуть меня. Вообще думаю собрать свои хотелки/мыслишки и от этого отталкиваться. Короче это в отдельном топике/может лично. Короче не тут точно, тут пока это никому не интересно будет.


Отлично. С удовольствием почитаю предложения. Вот тут вот еще много чего напредлагали. А основное обсуждение Немерла и т.п. здесь
Автор: VladD2
Дата: 12.01.17
.

Собственно сам я хочу сосредоточиться на ядре языка и бэкэнде для дотнета. Бдут стараться выбирать такие решения, которые потом будет легче воспроизвести для нэйтива.

VD>>Но лично у меня до этого вряд ли дойдут руки в ближайшее время.

F> Это всегда было понятно. Проделанная работа вашей команды ещё несколько лет назад была выше всяких похвал. Ammy же только подтверждает — что твои обзоры — не рекламная чепушень! Имхо — конкурентов у Нитры вообще нет как и не было.

Конкуренты есть, но мы их сильно опережаем. Тут не буду скромничать. Хотя дорабатывать много чего есть. Тут тоже не буду лукавить.

F>Я вижу проблему тока в привязке к дотнету. И мало материалов. Но это решится. Я люблю дотнет всей душой, но самые интересные программы на нём не сделать. Короче — я рад что не смотря на все невзгоды — ты остаешься верен своему делу.


Откровенно говоря не вижу почему бы на дотнете не делать самые интересные программы, но согласен, что привязка только к дотнету вредит распространению проекта.

Так что с удовольствием помогу тем кто захочет отвязать Нитру и Немерл от дотнета.

Что касатеся материала, то на русском его уже не так много, хотя конечно не все описано пока и на русском. А вот английском все хуже. Мой английский недостаточен для корректных переводов, к сожалению. Тут тоже нужна внешняя помощью.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: AMMY - XAML с человеческим лицом
От: Mr.Delphist  
Дата: 20.01.17 08:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты где-нибудь к XAML-у такие претензии предъявлял?


Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.
Re[6]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:23
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Например в QML есть Repeater — наверное кому-то было необходимо


Это не более чем контрол. А речь то идет о фичи языка. Думаю, что такие контролы для WPF уже имеются.

Куда чаще используются повторители на биндинге. Этого добра хватает и из коробки. На их базе можно и такой тупо повторитель сделать. Делаешь вырожденную коллекцию на нужное число элементов и вуаял! Даже можно за счет этого какие-то параметры менять. Сделать, например, четные Rectangle-ы красными, а не четными зелеными.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Косяки с точки зрения бизнеса (+)
От: Mr.Delphist  
Дата: 20.01.17 08:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А то в студии в рантайме XAML изменять нельзя вроде.


В последней Студии добавили (пока в ограниченном виде) такую возможность. На Channel9 есть ролик на эту тему.

VD>Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!


А что не так с XML? Ну, кроме религиозных предпочтений.

VD>Не нужен никому этот редактор. Нельзя в нем полноценно отобразить MVVM-ые фичи вроде биндинга. Вот превью нужно. Но быстрое, а не те тормоза, что в Студии есть. И качественное. А то у меня редактор XAML постоянно падает.


Т.е. предлагается unix-way — всё печатаем с клавы, чего забыли — курим маны? Ну и зачем тогда Студия — давайте сразу в vim

Лично я часть работы делаю руками в XML, часть в редакторе пропертей — они отлично дополняют друг друга. Так что, редактор нужен — без него я в этот Ammy ни ногой.
Re[4]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:47
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.


Не знал про такую фишку. Согласен, что использование этого дела или просто открытого кода закрытого лицензией было бы хорошим решением и сняло бы страхи.

А есть у кого-то такие лецензии на практике?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:52
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.


Согласен. Не все совершенно. Откровенно говоря я в XAML могу много камне накидать. Есть в нем и овердизайн, и динамика там где могла бы быть статика без потери можности, и по мелочи много разной фигни.

Хорошо бы, конечно, чтобы AMMY по бльше таких недоработок скрывал от пользователя.

Кстати, в AMMY можно инлайн-конвертеры будет писать. Авот мне эту фичу недавно показывал. Она наверно еще не опубликована, но скоро будет. Это реально упростит вопрос с конвертерами. Пишешь прямо по месту постенький конвертер в стиле:
Text: bind ActualWidth
        convert(double width) => "Width is " + width + " pixels"

и радуешься жизни.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 09:13
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>В последней Студии добавили (пока в ограниченном виде) такую возможность. На Channel9 есть ролик на эту тему.


Посмотрим. Спасибо за информацию!

VD>>Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!

MD>А что не так с XML? Ну, кроме религиозных предпочтений.

Тем что его читать нельзя сложно. Много мусора и неудобств. Плюс конкретно XAML слишком много динамики и прочих проблем имеет. Ты, вот, рядом на одну из них жаловался .

Уж если делать язык для WUI то надо сразу учесть ошибки прошлых решений.

Из XAML я бы позаимствовал только MVVM-модель.

Чистя генерация веба по XAML, конечно тоже имеет право на судествование. Но не факт, что в браузерах удастся воспроизвести фичи XAML-а на приемлемом уровне.

MD>Т.е. предлагается unix-way — всё печатаем с клавы, чего забыли — курим маны? Ну и зачем тогда Студия — давайте сразу в vim


vim не предоставляет того уровня интеллисенса, что нужен для быстрой разработки.

И в принципе я был бы не против визуального дизайнера, если бы он работал без проблем. Но редактор в Студии перестает работать на форматх чуть больше среднего. Это и дикие тормоза, и просто слеты от непонятных причин, когда редактор говорит "Не шмагла жагруззить файл" и ты ломаешь голову, что на этот раз пошло не так.

Плюс визуальный дизайнер зачастую вбивает константы, вместо того, чтобы использовать всю мощь XAML-а. Потом смотришь в код, чертыхаешься и идешь править вручную.

Что нам нужно от визуального редактора? Нам нужна интерактивность! Правда? Мы хотим поправить стиль (или что-то еще) и сразу увидеть результат.

Лив-превью и позволяет это сделать. Не плохой идеей является позволить настраивать свойства контрола (прямо в коде) с помощью проперти-грида. Какая разница тыкать в изображение контрола в визуальном редакторе или в текст контрола?

Можно даже сделать навигацию от контрола в работающем приложении в код. Скажем зажал ты Alt+Ctrl и кликнул в текстбокс прямо на форм. При этом откроется редактор кода и курсор спозиционируется в нужное место. Останется только поменять значение, записаться и оценить результат.

MD>Лично я часть работы делаю руками в XML, часть в редакторе пропертей — они отлично дополняют друг друга. Так что, редактор нужен — без него я в этот Ammy ни ногой.


А если появились бы фичи которые я описал выше (проперти-грид для текста и возможность навигации в код прямо из работающей формы) ты смог бы обойтись без дизайнера?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 20.01.17 09:15
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Здравствуйте, VladD2, Вы писали:


VD>>Ты где-нибудь к XAML-у такие претензии предъявлял?


MD>Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.


Костыль на этот случай имеется:
/*
     * 
     Источник http://www.wpfmentor.com/2008/11/adding-bindings-to-clr-properties-in.html

     Всё это счастье нужно, чтобы иметь возможность биндить зачения к НЕ DependencyProperty.
     Пример использования

    <Window.Resources>
        <!-- IsGuidRequired это свойство DataContext -->
        <wpf:DataResource BindingTarget="{Binding IsGuidRequired}" x:Key="IsGuidRequired" />
    </Window.Resources>
    ...
    <TextBox.Text>
        <Binding Path="Reason.Guid" ValidatesOnDataErrors="True">
            <Binding.ValidationRules>
                <!--  Вот оно!! ValidationRule - не DepepedencyObject, но смогли к нему забиндить свойство контекста! -->
                <wpf:RequiredValidationRule IsRequired="{wpf:DataResourceBinding DataResource={StaticResource IsGuidRequired}}" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>

         */
    public class DataResource : Freezable
    {
        public static readonly DependencyProperty BindingTargetProperty = DependencyProperty.Register(nameof(BindingTarget), typeof(object), typeof(DataResource), new UIPropertyMetadata(null));

        public object BindingTarget
        {
            get { return GetValue(BindingTargetProperty); }
            set { SetValue(BindingTargetProperty, value); }
        }

        protected override Freezable CreateInstanceCore() => (Freezable)Activator.CreateInstance(GetType());
        protected sealed override void CloneCore(Freezable sourceFreezable) => base.CloneCore(sourceFreezable);
    }

    public class DataResourceBindingExtension : MarkupExtension
    {
        private object _targetObject;
        private object _targetProperty;
        private DataResource _dataResouce;

        public DataResource DataResource
        {
            get { return _dataResouce; }
            set
            {
                if (ReferenceEquals(_dataResouce, value)) return;
                
                if (_dataResouce != null)
                {
                    _dataResouce.Changed -= DataResource_Changed;
                }
                _dataResouce = value;
                if (_dataResouce != null)
                {
                    _dataResouce.Changed += DataResource_Changed;
                }
            }
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var target = serviceProvider.GetRequiredService<IProvideValueTarget>();

            _targetObject = target.TargetObject;
            _targetProperty = target.TargetProperty;

            // _targetProperty can be null when this is called in the Designer.
            Debug.Assert(_targetProperty != null || DesignerProperties.GetIsInDesignMode(new DependencyObject()));

            if (DataResource.BindingTarget == null && _targetProperty != null)
            {
                var propInfo = _targetProperty as PropertyInfo;
                if (propInfo != null)
                {
                    try
                    {
                        return Activator.CreateInstance(propInfo.PropertyType);
                    }
                    catch (MissingMethodException)
                    {
                        // there isn't a default constructor
                    }
                }

                var depProp = _targetProperty as DependencyProperty;
                if (depProp != null)
                {
                    var depObj = (DependencyObject)_targetObject;
                    return depObj.GetValue(depProp);
                }
            }

            return DataResource.BindingTarget;
        }

        private void DataResource_Changed(object sender, EventArgs e)
        {
            // Ensure that the bound object is updated when DataResource changes.
            var dataResource = (DataResource)sender;
            var depProp = _targetProperty as DependencyProperty;

            if (depProp != null)
            {
                var depObj = (DependencyObject)_targetObject;
                var value = Convert(dataResource.BindingTarget, depProp.PropertyType);
                depObj.SetValue(depProp, value);
            }
            else
            {
                var propInfo = _targetProperty as PropertyInfo;
                if (propInfo != null)
                {
                    var value = Convert(dataResource.BindingTarget, propInfo.PropertyType);
                    propInfo.SetValue(_targetObject, value);
                }
            }
        }

        private object Convert(object obj, Type toType)
        {
            try
            {
                return System.Convert.ChangeType(obj, toType);
            }
            catch (InvalidCastException)
            {
                return obj;
            }
        }
    }
Re[3]: AMMY - XAML с человеческим лицом
От: Somescout  
Дата: 20.01.17 11:41
Оценка:
Здравствуйте, ionoy, Вы писали:

WH>>3)Так как алиас всегда возвращает строго один узел скобки лишние.


WH>>Ну и для однообразия с миксинами

WH>>
WH>>alias Header(text) for TextBlock {
WH>>    FontSize: 18
WH>>    Text: $text
WH>>}
WH>>


I>Ага, я точно про такой синтаксис думал. Но поразмыслив решил остановится на текущем — он по моему легче читается. "Есть функция, которая вставляет такую-то ноду". Короче говоря, это спорный момент.


Замечание со стороны, если можно: читается оно действительно лучше, но вводит в заблуждение что можно указать несколько узлов. Если подобной функциональности не планируется, то лучше бы без скобок.
ARI ARI ARI... Arrivederci!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.