Сообщения

Сообщения за октябрь, 2009

Дополнение к предыдущему посту “Темы в Silverlight Toolkit October убивают валидацию в TextBox. Т.е. валидационный View. Видимо так было раньше и пока так будет, но это несложно поправить.”.

Предыдущий пост: Темы в Silverlight Toolkit October убивают валидацию в TextBox. Т.е. валидационный View. Видимо так было раньше и пока так будет, но это несложно поправить. Продолжение предыдущего поста: А вот безобразие, которое было до этого: ___________ <!--Textbox--> <Style TargetType="TextBox">     <Setter Property="BorderThickness"         Value="1"/>     <Setter Property="Background"         Value="{StaticResource ShadeBrush}"/>     <Setter Property="Foreground"         Value="#FF000000"/>     <Setter Property="Padding"         Value="2"/>     <Setter Property="BorderBrush"         Value="{StaticResource NormalBorderBrush}" />     <Setter Property="Template">         <Setter.Value>             <ControlTemplate TargetType="TextBox">                 <Grid >                     <vsm:Vi

Темы в Silverlight Toolkit October убивают валидацию в TextBox. Т.е. валидационный View. Видимо так было раньше и пока так будет, но это несложно поправить.

Если использовать темы из Silverlight Toolkit, то сразу бросается в глаза, что при их применениее сразу убивается View для валидации в TextBox. Не знаю с чем связано такое безобразие, но вернуть это все несложно. Для этого нужно выполить следующее: Рассмотрим стандартно применяемые стиль и шаблоны для TextBox на странице TextBox Styles and Templates (En) Оттуда скопируем в наш файл, взятой из Silverlight Toolkit темы, “ControlTemplate for ValidationTooltip” . <ControlTemplate x:Key="ValidationToolTipTemplate"> … </ControlTemplate> Поскольку к этому шаблону из стиля TextBox идет обращение, как к статическому ресурсу по имени ValidationToolTipTemplate, то размещать его XAML надо до XAML стиля TextBox. Далее нам осталось только дополнить недостающие части XAML стиля для TextBox <Style TargetType="TextBox"> … </Style> Сравните аккуратно исходный стиль и стиль в вашей теме и вы легко определите место куда вставить недостающие VisualState’ы и <

Выполнение произвольной промежуточной операции над данными внутривыражения LINQ

Первый абзац это теория и вступление, переходите к следующему, кто в теме При написании LINQ постоянно появляется желание выполнить промежуточную операцию над данными. По науке это не правильно, т.к. пока производительность не страдает каждый цикл по данным должен служить отдельной роли. Ведь LINQ это и есть цикл, определенные на языке запросов. Но, тоже по науке :), код должен быть очевиден и однотипные или связанные операции сгруппированы. Сразу ответ на тему поста: Я использую выражение LINQ “ let ” для написание промежуточной операции, но с некоторым простым ухищрением. Вот пример: var orgUnits = (     from el in orgUnitsDict.Values     // в промежуточной операции отсортируем элементы в дочернем объекте     let dummy = el.Phones = el.Phones .OrderBy(p => p.PhoneStr).ToList()     orderby el.ParentId,     el.IsGroup descending,     el.Name     select el ).ToList(); Описание: В этом выражении из словаря объектов я получаю отсортированный список этих же объектов, но попутно,

ORA-06502: PL/SQL: numeric or value error: character string buffer toosmall

Ошибка на Oracle ORA-06502: PL/SQL: numeric or value error: character string buffer too small В моем случае это связано с тем, что функция или процедура Oracle имеет возвращаемый парампетр Varchar2 и я использую ODP.NET и следующий код устанавливающий параметр на стороне ADO.NET (т.е. на стороне .NET Framework приложения): oCom.Parameters.Add("o_name", OracleDbType.Varchar2, ParameterDirection.Output); Неправильно, сказала Oracle всем :), надо использовать следующее извращение, сказала Оракля: oCom.Parameters.Add("o_name", OracleDbType.Varchar2, 300, null, ParameterDirection.Output); Здесь 300 – это размерность. Любая, но не меньше, чем вы ожидаете. null – ну типа как изначальное значени. Уже стотый раз спотыкаюсь на этом, но постоянно забываю об этой несуразности. С облегчением :) !

Silverlight Drag And Drop. У Сильверлайта появился свой нормальный драг дроп с выходом Toolkit от октября 2009 года.

Очень хорошо! Но оказалось, что это заметно тормозит при количестве элементов в списке от 500. Например, если в ListBox 3 000 элементов, то какая-либо реакция проявляется только через 5 секунд. Пока проджекта не уговорю сделать пейджинг и фильтрацию, придется, для некоторых задач, продолжить пользоваться своим аналогичным фреймворком, который работает ваабще без задержек. Но все равно стоит использовать решение из Toolkit, т.к., например, мое решение не умеет разворачивать ноды в TreeView. Недолго сделать, но прикручивать все такие мелочи – жизни не хватит :) . Ниже источники и описание. Блог Tim Heuer "Silverlight Toolkit adds DragDrop" EN – здесь ознакомительное описание, позволяющее начать работать с примером. Silverlight Toolkit EN – а здесь исходник с примером. Если вы хотите глубоко кастомизировать ваши решения, то нужно смотреть New with the Silverlight Toolkit: Drag and Drop Support for all your Favorite Controls! (Part 1) и Silverlight Toolkit Drag Drop (Part 2):

Яндекс устал

Никогда не задумывался, почему Яндекс непопулярен у активных и продвинутых пользователи интернета. Почему же предпочитают Google. Просто Яндекс медленный. Не хватает ресурсов, что бы оперативно проиндексировать весь интернет и поспевать за его изменениями и новостями. Там, видимо, посчитали, что если они будут активно переиндексировать популярный контент, то этого достаточно. Я люблю оба поисковика, но если мне нужна информация посвежее, я пользуюсь Google. Хотя Яндекс, бывает, что приятно удивляет :)

Задание прикрепленного свойства в XALM. Set Attached Properties in XALM.

Сразу несколько примеров, чтоб все стало ясно Вот эту запись: <Button Grid.Row=”1”>     <TextBlock>1234567890</TextBlock> </Button> Можно записать так: <Button>     <Grid.Row>         1     </Grid.Row>     <TextBlock>1234567890</TextBlock> </Button> Пример из жизни: <Border>     <vsm:VisualStateManager.VisualStateGroups>         <vsm:VisualStateGroup x:Name="CommonStates">             <vsm:VisualState x:Name="Normal" />         </vsm:VisualStateGroup>     </vsm:VisualStateManager.VisualStateGroups> </Border> Т.е. помимо задания прекрепленных свойств через атрибуты, их можно задавать в нодах XALM. Это очень хорошо пригодиться при кастомизации

Сохраняем в SVN WCF Service References проекта на Silverlight

Чтобы избежать путаницы с файлами Service References WCF клиента в проекте Silverlight 3 и позволить проекту компилироваться, стоит в SVN сохранять только файлы, содержащие в названии слово Reference. Это всего два файла: Reference.svcmap и Reference.cs . Все остальное добавте в Ignore list SVN, лучше по расширению, т.к. при генерации клиента в названии файлов могут добавлятьс числа. Мало того, вы можете физически удалить все что есть в папке Service References, кроме перечисленных выше двух файлов. При этом проект будет компилится и сервисы будут работать. При первом же вызове, из контекстного меню в Solition Explorer, Update Service Reference все удаленное восстановиться. В моем, довольно кастомизированном случае это работает, но возможно, иногда это работать не будет. Я не могу позволить себе изучить это досконально, так что будте осторожны и перед удалением сделайте резервную копию, если вы еще не пользуетесь системой контроля версий. SVN – система контроля версий WCF Service Refe

Silverlight: Утечки памяти. Memory leak

Список приемов, которые создают утечки памяти (ресурсов) в Silverlight Биндинг. Привязываем через <my:MyUI SourceUI="{Binding ElementName=MyElementName}"/>. Динамически удаляем или заменяем MyElementName. В свойстве зависимостей SourceUI останется ссылка на удаленный превый экземпляр MyElementName. Решение: не использовать привязку для динамически удаляемых элементов. :) другого пока ничего не нашел, но есть сильные подозрения, что найду.

Silverlight 3 Binding ConverterParameter

Можно передать в ConverterParameter не только значение созданное литералом в выражении привязки, но и объект. Для этого объетк нужно объявить на странице, как статический ресурс и использовать, например, следующее выражение привязки. ItemsSource="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource CompensationForPhone}, ConverterParameter={usercontrols:SubscriptionLayoutUiAccessor}}" Но прежде чем так делать, подумайте, не лучше ли сделать привязанный к определенному UI IValueConverter и доставать в нем нужные элементы UI из статических свойств.

Silverlight: Корректное манипулирование фокусом при его потере

Вам нужно при нажатии на кнопку анимировать ее и на время анимации заблокировать ее от пользователя. Если блокировать кнопку через IsEnebled=false, (подскажите мне дроугой способ) то фокус переходит на следующий в дереве элемент управления принимающий фокус. Например в моем случае я блокирую кнопку Save и получаю фокус на кнопке Delete, что ужасно :) Дружественно решить это поможет задание фокуса на корневом элементе Application.Current.RootVisual перед или сразу после установки myButton.IsEnebled=false. Единственное ограничение, которое легко обойти, не выставляйте, при старте приложения Silverlight, в RootVisual элемент не наследуемый от Conrol. Если вы оставите все как есть, то в RootVisual будет UserConrol, что нам и нужно. Если вас не ломает и не выворачивает жестоко, то вы так и сделаете :) А вот желанный кусочек кода public static class UiUtilsCommon {     // …     /// <summary>     /// Снятие фокуса с текущего элемента и постановка его на RootVisual.     /// Используется

Ошибка - Компонент "75a0fea7-12fe-4cad-a1b2-525fa776c07e" не установленв данной ферме и не может быть добавлен в эту область

Ого, сказал я себе, когда ничего не нашел подобного в поисковиках! Компонент "75a0fea7-12fe-4cad-a1b2-525fa776c07e" не установлен в данной ферме и не может быть добавлен в эту область. У меня это связано со следующим: Решил накатить один из шаблонов приложений Windows SharePoint Services 3.0 , который для администраторов сервера , т.е. ставиться на уровне сервера из командной строки. Но забыл про то, что нужно сначала выполнить установку обязательного шаблона Application Template Core . Т.е. я об этом помнил, но у меня уже столько накопилось разработческих сред, что я и не помню где установлен Template Core :). Для проверки зайдите в Центр администрирования ( Старт – Пуск / Administrative Tools / Центр администрирования SharePoint 3.0 ). Когда откроется браузер, в нем зайдите в Центр администрирования > Операции > Управление решениями и проверте, что у вас установлено решение “ applicationtemplatecore.wsp ” Установить Application Template Core из командной строк

stsadm Нет доступа

Столкнулся с проблемой при установке шаблона SharePoint на уровне сервера. Такие шаблоны устанавливаются только из командной строки через Windows SharePoint Services administration tool STSADM.EXE Эта штука лежит в %PROGRAMFILES%\common files\microsoft shared\web server extensions\12\bin\ Дак во, при любом вызова stsadm я получал сообщение “Нет доступа”. Гугл сказал, что Нужны были права админа в базе данных , но мне некогда было разбираться с правами, я вспомнил, что устанавливал SharePoint (в моем разработческом случае это WSS) под учеткой Administrator, зашел под ней и все установил. Причем пришлось поменять пароль администраторской встроенной учетке, тк забыл :) Кстати, вот сразу полезные строчки для установления шаблонов на уровне сервера через командную строку Установка шаблона = "%PROGRAMFILES%\common files\microsoft shared\web server extensions\12\bin\stsadm" -o addsolution -filename " C:\WssTemplates \ KnowledgeBase .wsp " "%PROGRAMFILES%\common f

”Введение в Microsoft Silverlight 3” от Лоуренса Морони – книга агвно.

Книга действительно агвно, разве что на русском. Даже Microsoft WPF-Silverlight Comparison Whitepaper  http://wpfslguidance.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28278 содержит больше информации!Это даже не введение, это рекламный проспект какой-то! Потивно читать, что не возмешь посмотреть по работе, одни белые пятна. Я считаю эту книгу вредной для разработчика.Мой совет, используйте хорошую книгу по WPF (помимо блогов и MSDN, и прочего конечно), там материала больше на порядки.Надеюсь скоро выпустят что-то приличное для Silverlight 3.” Введение в Microsoft Silverlight 3 ” от Лоуренса Морони Microsoft WPF-Silverlight Comparison Whitepaper