Впервые прочитав знаменитую статью Джоша Смита WPF Apps With The Model-View-ViewModel Design Pattern я был очень вдохновлен философией MVVM и решил все будущие проекты писать исключительно с ее использованием. По мере «внедрения» MVVM я столкнулся с определенными трудностями и недостатками (на мой субъективный взгляд). В одном из проектов мне был необходим UserControl, который бы позволял авторизироваться на веб-сервисе. При попытке забиндить свойство ViewModel к элементу управления PasswordBox я получил такую ошибку:
A 'Binding' cannot be set on the 'Password' property of type 'PasswordBox'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject
Читать полностью »
Рубрика «wpf» - 11
Доступ к PasswordBox в условиях MVVM
2013-02-13 в 7:49, admin, рубрики: .net, binding, mvvm, wpf, метки: binding, mvvm, wpfCборка js, redjs builder
2013-02-12 в 20:54, admin, рубрики: .net, javascript, makefile, wpf, Песочница, я пиарюсь, метки: .net, c++, javascript, makefile, wpfПривет читатель.
Что-то про вступление
Раз уж я все таки уволился с работы и есть свободное время, расскажу немного про сборку скриптов, а так же про свое кустарное решение годичной давности — redjs builder. Статья, наверное, заинтересует js-разработчиков, которые ведут крупные проекты, которые не удобно вести в одном файле.
О чем речь?
Если вы js разработчик и вы в своей жизни писали что-то большее чем плагин слайдера на jquery, то вам наверняка приходила в голову мысль: «а вот как бы было удобно если бы 1-н файл разделить на несколько». И у меня такая идея возникала не однократно, ещё когда активно занимался написанием своей js библиотеки. И тут в свое время я набил себе бока…
Читать полностью »
.Net: женим Portable Library и UI
2013-02-09 в 5:44, admin, рубрики: .net, silverlight, windows phone, windows store app, wpf, метки: silverlight, windows phone, windows store app, wpfОдин контрол на всех, и все на одного: WPF, Silverlight 4-5, WinPhone 7-8, Windows Store App (x86, x64, ARM)
Сразу дискламер — это не Розеттский камень, а лишь хитрость, которая поможет, если у вас есть UserControl, почти идентичный для всех платформ.
Бонус — видео процесса разработки в конце статьи — статья простая и короткая, а видео 8 минут отличной музыки. Не у всех есть Windows8, многим наверное будет просто любопытно увидеть процесс в W8 + VS2012, поэтому заморочался.
Нам подарили Portable Library — отличная штука, сразу для всех платформ. Но, есть и ложка дёгтя — почти ничего, кроме числомолотилки и бизнес-процессов с этим не сварить, поддерживаемые неймспейсы подвели.
Эта штука не только не знает что такое XAML, но не знает даже что такое Point! Куда уж проще, две координаты, X и Y — но это проблема, и предмет отдельного обсуждения с лучами ненависти к индусам и бардаку архитекторов.
Читать полностью »
Трудный выбор грида для проектов на WPF
2013-01-31 в 8:24, admin, рубрики: .net, devexpress, Telerik, wpf, метки: devexpress, Telerik, wpfПеред нашей командой встала задача выбора для будущих проектов библиотеки WPF компонентов для быстрой разработки пользовательского интерфейса бизнес-приложений. Посылом к рассмотрению стало то, что стандартный грид (а это обычно большая часть функционала пользовательского интерфейса бизнес-приложения) не устраивает по многим параметрам. Много чего приходится допиливать напильником, изобретая очередной велосипед. Надоело! Мы решили сравнить гриды из каждой библиотеки и сделать обоснованный выбор.
Участники конкурса
Думаю, что список участников сравнения никого не удивит:
Кому интересно как это происходило, прошу под кат.Читать полностью »
Экономим затраты на интернет от Yota
2013-01-19 в 11:59, admin, рубрики: LTE, WebBrowser, wpf, Yota, лайфхак, Софт, метки: c++, LTE, WebBrowser, wpf, Yota, лайфхакПролог
Пару месяцев назад в моем городе запустил свою LTE сеть оператор беспроводной связи Yota. Немного поколебавшись, я решил, что стоит попробовать – в надежде, что с LTE Yota дела обстоят лучше, чем с 3G от операторов большой тройки. И, должен сказать, что пока ничуть не разочаровался в своем решении.
И дело не только в том, что скорость выше, а покрытие города ничуть не хуже. Используя интернет от Yota я трачу меньше денег, чем раньше. Ведь есть в личном кабинете такой замечательный регулятор скорости, который можно поставить на минимум, и увеличивать скорость только тогда, когда это действительно необходимо.Читать полностью »
Альтернативный WPF язык JAML = XAML − XML + JSON
2013-01-15 в 23:02, admin, рубрики: .net, json, wpf, XAML, XML, интерфейсы, Программирование, метки: .net, c++, json, wpf, XAML, XML На дворе наступал Новый год, а из головы никак не выходила мысль, что XAML может быть лучше. И, чтобы ему быть лучше, ему нужно перестать быть. Так родилась затея написать альтернативу кошмарному и ужасному XAML'ю: без <Setter.Value>, без {Binding Path=Name, RelativeSource={RelativeSource AncestorType={x:Type Button}}, Converter={StaticResource Converter}}, без FirstValueEqualsToSecondValueOrThirdValueEqualsNullConverter, без <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions>, без <MultiDataTrigger> <MultiDataTrigger.Triggers> <DataTrigger> <DataTrigger.Binding> <MultiDataBinding>..., без xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml", без всего этого барахла, от написания которого в десятый раз возникают позывы нежно погладить компьютер табуретом и вспоминаются далёкие индусские родственники разработчиков WPF.
Приветствуем: JAML = XAML − XML + JSON
Фичи:
- Тёплый ламповый синтаксис JSON без кавычек вместо дьявольских уголовых скобок XML.
- Краткий и вменяемый синтаксис для markup extensions: километровые один-раз-написал-потом-читать-страшно-байндинги
{Binding Path=Name, RelativeSource={RelativeSource AncestorType={x:Type Button}}, Converter={StaticResource Converter}}превращаются в почти присваивания{= ~Button.Name, Converter={@Converter} }. - Кошерные выражения на C# на замену некошерным конвертерам:
{= ${=Property1} == ${=Property2} || ${=Property3} == null }. - Смерть «элементной» записи свойств —
<Setter.Value>уходят в небытие. - Зубодробительное повторение повторений объявляется устаревшим: если куда-то можно положить только
ColumnDefinition, не надо повторять это десять раз. - Сеттеры и триггеры перестают быть многобуквенными сериализованными костылями: сеттеры выглядят как присваивание свойств, триггеры выглядят как условия.
- Смерть дублированию десяти «clr-namespace» с указанием имён соборок и прочей нечисти.
Звучит классно? А выглядит оно так:
_={
$: 'Window root',
Resources: [{
$: 'Style MyButtonStyle Button',
set: {
Background: 'Red', Foreground: 'Green'
},
on: {
'{=this.IsMouseOver}': {set: {
Background: 'Yellow', Foreground: 'Blue'
}}
}
}],
_: [{
$: 'Grid',
RowDefinitions: [ { Height: '*' } ],
ColumnDefinitions: [ { Width: '*' } ],
_: [{
$: 'Button btnPressMe', Content: 'Press me!', Style: '{@MyButtonStyle}'
}]
}]
}
WPF, WinForms: 15000 FPS. Хардкорные трюки ч.1.5
2013-01-06 в 12:40, admin, рубрики: .net, bitmap, fast 2D, graphics, WinForms, wpf, высокая производительность, хардкор, метки: .net, bitmap, fast 2D, graphics, WinForms, wpf, хардкор Неожиданное продолжение этого поста, поэтому часть 2 хардкорных трюков, в которой речь пойдет немного о другом, пока подождет.
Итак, в двух словах, что изменилось: добавлен контрол и тестовое приложение для WindowsForms, вариант WPF немного изменился, рефакторинг-причесалинг, добавился threadsafe и контрол теперь может нормально ресайзиться в рантайме (включено в сэмплы, но не советую разворачивать на полный экран — это реально пугает). Спасибо камрадам, указавшим на ошибки и недостатки и теперь теперь проект гордо 0.5 beta. Можно сразу отправиться за обновлением на razorgdipainter.codeplex.com/, кому интересны подробности прошу под кат.
Читать полностью »
WPF, WinForms: рисуем Bitmap c >15000 FPS. Хардкорные трюки ч.1
2013-01-04 в 11:29, admin, рубрики: .net, bitmap, fast 2D, graphics, WinForms, wpf, высокая производительность, хардкор, метки: .net, bitmap, fast 2D, graphics, WinForms, wpf, хардкор Сразу уточнение: Bitmap 200x100 на компе с быстрой памятью и 3930K на 1366. Но, это System.Drawing.Bitmap.
Вводная: приложение типа осциллографа. Ссылка на готовый проект с фронтэндом в конце статьи.
Как же быстро рисовать его на экран? WriteableBitmap хорош, быстр, и он лучшее решение для WP, WinRT, WPF. Но занудного старпёра-кодера также волнует WinForms, .Net 2.0, Win2K (да-да, в некоторых гос.органах до сих пор теплый ламповый Win2K).
Далее, я обратил внимание на DirectX, тем более у нас для WPF появился полезный контрол D3DImage. Я перепробовал много движков, но ни один из них не давал удобного изящного способа рисовать GDI+ Bitmap из памяти. Некоторые работали и вовсе только с DX10-11. Ближе всех к цели оказался SlimDX. В любом случае, фронтэнд для контрола оказывался некрасивым. Все эти движки… мягко говоря избыточны, для моей простой задачи.
Читать полностью »
Тернистый путь в Windows Store
2012-12-29 в 14:30, admin, рубрики: windows, Windows 8, Windows RT, windows store, wpf, XAML, кактус, конкурс разработчиков, разработка, метки: Windows 8, Windows RT, windows store, wpf, XAML, кактус, конкурс разработчиков
Как и многие программисты, я с опаской относился (и отношусь) к Windows 8, но не удержался попробовать написать пару программ для Windows Store. Все-таки, это модная тенденция: .Net 4.5, C# 5, XAML.
Как раз в эти дни, 4го декабря, мне попалась на глаза статья про конкурс приложений для W8 от Microsoft. Выкладывать экспериментальные программы было как-то не серьезно (хотя маркет такими поделками буквально переполнен), потому я решился портировать достаточно масштабный проект с MonoTouch и iOS. Запаситесь попкорном, потому как кроме программистских деталей тут будет и комедия, и драма, и жизненный финал.
Watermark для TextBox-а в Windows 8 приложениях
2012-12-19 в 9:21, admin, рубрики: .net, usercontrol, windows store app, wpf, метки: usercontrol, windows store app, wpf
В последнее время, стало модным, помимо поясняющей надписи для TextBox-а еще и на самом TextBox-е писать некоторую подсказку. Должно все это выглядеть так, как на картинке для привлечения внимания. Пока пользователь ничего не ввел, подсвечивается подсказка. Если пользователь ввел текст, то подсказка не показывается. Не бог весть, какая сложная логика, но т.к. у ControlTemplate в Windows Store приложениях отобрали триггеры, то придется это делать не стилем, а именно новым элементом управления.
Под катом, будем пошаговое руководство, по разработке такого компонента, ориентированное на тех, кто первый раз подходит к разработке своих элементов управления. Для тех, кто уже программирует под Windows Store откровений не будет, но если не сложно, выложите рекомендации в комментариях, может кто-то действительно решит сделать хороший элемент управления для такой задачки.
Читать полностью »
