Welcome to MSDN Blogs Sign in | Join | Help

Шпаргалка по LINQ to SQL

Хорошо сгруппированные базовые операции для C# и VB.NET на одном листе A4 - http://damieng.com/blog/2009/08/12/linq-to-sql-cheat-sheet 

Шпаргалка по LINQ to SQL

Posted by Roman Zdebskiy | 1 Comments
Filed under: ,

Выложен скринкаст доклада “Создание приложений доступа к данным с помощью WPF” с весенней волны семинаров TechDays (Дни разработчика)

Доступно видео и исходный код демонстраций

Доклад уровня 300 – для тех, кто уже достаточно хорошо знаком с WPF, для тех, кто еще нет, советую сначала посмотреть обзорные доклады уровня 100 и, обязательно, - Основные принципы разработки приложений на WPF.

Описание доклада

В этом докладе мы рассмотрим лучшие практики создания приложений доступа к данным на Windows Presentation Foundation и посмотрим ряд демонстраций. WPF кроме визуализации, дает нам мощнейшие возможности по  связыванию данных (DataBinding), мы увидим, как это помогает в разработке, и, что и как эффективно можно использовать и в ваших проектах.

Смотрим полностью здесь.

Posted by Roman Zdebskiy | 9 Comments
Filed under: ,

Три места на мой завтрашний тренинг по WPF в Москве- спешите

Полнодневный бесплатный тренинг по WPF для начинающих, образовалось три свободных места для всех желающих.

 

Завтра 5ого марта - Начало тренинга в 10.00, окончание в 18.00

Описание тренинга
В данном тренинге мы познакомимся с основами Windows Presentation Foundation, изучим модель разработки и основные практики создания приложений, использования различных элементов управления, инструменты и ключевые возможности платформы (XAML, стили, шаблоны расположения элементов, произвольную 2D и 3D визуализацию и многое другое). Главный результат данного тренинга – вы сможете начать создание собственных приложений на Windows Presentation Foundation.
Требование к подготовке аудитории:

  • Базовое понимание .NET языков разработки (C#/VB.NET)
  • Базовое умение работать с Microsoft Visual Studio.NET (2005/2008).
  • Понимание принципов создания пользовательских интерфейсов Windows (любое из — WinForms, VB 6, Delphi).
Краткая программа:
  1. Основы WPF
  2. Типы проектов и инструменты для работы
  3. 2D и 3D графика
  4. Шаблоны расположения элементов пользовательского интерфейса
  5. Элементы управления
  6. Связывание с данными
  7. Стилизация приложений
  8. Разворачивание WPF приложений

Каждому участнику тренинга будет предоставлен компьютер.
Во время тренинга участникам будет предоставлены кофе и булочки во время перерывов. Обед будет проходить в столовой бизнес-центра за счет самих участников.

Подтверждение регистрации получат первые три человека, оставившие комментарий «Регистрируюсь»  и свой емайл к этой записи.

Posted by Roman Zdebskiy | 12 Comments
Filed under: ,

PhotoSuru для Windows 7 доступен для скачивания

Опубликована версия, работающая на Windows 7

Я уже писал об очень красивом приложении, которое может рассматриваться как пример использования возможностей WPF для улучшения Usability.

image

Меня не раз спрашивали о версии для Windows 7 - вот она - http://www.photoSuru.com/photoSuruWin7Setup.exe

Posted by Roman Zdebskiy | 3 Comments
Filed under: , ,

Онлайн доклады по WPF и технологиям доступа к данным новой волны TechDays.ru

Список и описания только что опубликованных докладов по данным темам. Появление нового блока "Готовые решения"

Помимо треков Windows Presentation Foundation и Технологии доступа к данным, по которым информация ниже, хочу обратить ваше внимание на трек "Готовые решения", его основная идея - давать готовые руководства и инструменты для решения рабочих задач, которые вы можете на следующий день использовать в вашей деятельности.

В частности, я в рамках данного трека сделал один из докладов:

Построение произвольного отчета для руководства из любой базы данных за 15 минут. Автор: Здебский Роман

 

Теперь общий список - на прошлой неделе стало доступно много новых докладов на TechDays.ru.

Смотрите, изучайте, оставляйте комментарии:

Трек Windows Presentation Foundation

 

Трек Технологии доступа к данным

Другие треки

Posted by Roman Zdebskiy | 1 Comments
Filed under: , , ,

Хороший повод пообщаться - мой вебкаст о будущем WPF сегодня (19.02.09) в 12:00

Веб-трансляция Windows Presentation Foundation - взгляд в будущее. Подключаемся здесь.

Запись трансляции выложена здесь - http://www.techdays.ru/videos/1238.html

WPF Control Browser - все популярные элементы управления (контролы) WPF и Silverlight, включая третьих производителей вживую в одном приложении

Моментально устанавливаемое через ClickOnce приложение, позволяющее вживую протестировать большое количество современных элементов управления для WPF и Silverlight

Узнал об очень интересном приложении - WPF Control Browser, быстро установив его с помощью ClickOnce, вы можете вживую попробовать очень большое количество элементов управления:

image image image

Представлены все встроенные элементы управления WPF и Silverlight, включая Toolkits, а также контролы следующих известных производителей:

  • ActiPro
  • Blendables
  • Component One
  • DevExpress
  • Infragistics
  • SyncFusion
  • Telerik
  • Xceed
Posted by Roman Zdebskiy | 7 Comments
Filed under: , ,

PhotoSuru - пример очень красивого приложения на WPF для просмотра фото

В ходе осенней волны TechDays я показывал пример хорошо сделанного с точки зрения интерактивности и анимаций приложения - PhotoSuru.

image

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

Загрузить PhotoSuru можно отсюда - http://www.photosuru.com/.

Исходный код доступен здесь.

Что еще интереснее, PhotoSuru является примером использования Syndicated Client Experiences Starter Kit Beta и & Reader Beta SDK , свободно доступного на главном сайте по разработке клиентских приложений на платформе Windows -  http://www.windowsclient.net.

С помощью библиотеки Syndicated Client Experiences Starter Kit Beta и & Reader Beta SDK вы можете быстро создавать клиентские приложения, позволяющие потреблять из RSS источников и произвольным образом визуализировать различные данные - информацию (текст), изображения, видео, и т.п.

Например, в PhotoSuru вы можете видеть ряд медиа-источников, с которым удобно позволяет работать функционал Syndicated Client Experiences Starter Kit Beta и & Reader Beta SDK, в частности, ниже пример использования FlowDocumentPageViewer и интерактивного облака тегов, также в приложении демонстрируются шейдерные эффекты, которые стали доступны в WPF 3.5 SP1:

image image image

Если вам интересны данные сценарии, очень советую познакомиться с Syndicated Client Experiences Starter Kit Beta и & Reader Beta SDK, на нем уже сделаны ряд приложений:

P-I Reader by the Seattle Post-Intelligencer
P-I Reader by the Seattle Post-Intelligencer
iReader by Chosun Ilbo
iReader by Chosun Ilbo
El Reader by El Observador Digital
El Reader by El Observador Digital
LaNacion Reader by La Nación

LaNacion Reader by La Nación
LaNacion Reader by La Nación
Architecture Journal Reader by The Architecture Journal
 
 
Posted by Roman Zdebskiy | 4 Comments
Filed under: , ,

Entity Framework Learning Guide - очень полезное подробное руководство

500-страничная работа энтузиаста, освещающая основные моменты и практики работы с Entity Framework - очень рекомендую.

 

Я как раз собирался писать пост про поддержку хранимых процедур в Entity Framework, когда мне прислали ссылку на данную работу - Contributions to Entity framework community .

В ней Zeeshan Hirani подробно на 500-ста страницах разбирает все основные сценарии использования Entity Framework:

  • Создание Entities (Концептуальной модели) с использованием не только one-to-many, но и self-referencing и many-to-many связей, а также Entity Splitting
  • Реализацию сценариев Eager и Lazy Loading
  • Работу с QueryView и DefiningQuery для расширения возможностей маппинга
  • Реализация наследования при использовании Entities
  • Оптимизация производительности Entity Framework
  • Работу с хранимыми процедурами во всех основных поддерживаемых сценариях.

Я более подробно почитал как раз последнюю часть и пришел к выводу, что она очень хорошо раскрывает данную тему, а также перечисленные выше сценарии, поэтому и привожу ссылку на данную работу здесь. Также данное руководство снабжено примерами демонстрируемых решений, что делает его еще ценнее.

Posted by Roman Zdebskiy | 13 Comments
Filed under: ,

WPF ListBox и DataTemplates - В чем их сила и как избавиться от стандартного синего маркера выделения?

В очередной раз получил данный вопрос и решил поделиться ответом со всеми.

Как я думаю, многие знают, DataTemplates являются мощнейшим механизмом, позволяющим переопределять визуализацию элементов управления, выводящих множество элементов данных (ListBox, ListView, TreeView...).

С помощью них вы можете выводить в рамках одного визуального шаблона сразу множество аттибутов элемента данных.

Например, имея данный ListBox:

image

Я могу применив данный DataTemplate

   1: <DataTemplate x:Key="EquityTemplate">
   2:             <Grid>
   3:                 <Rectangle Margin="2" >
   4:                     <Rectangle.Fill>
   5:                         <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
   6:                             <LinearGradientBrush.GradientStops>
   7:                                 <GradientStopCollection>
   8:                                     <GradientStop Color="#aaffffff" Offset="0"/>
   9:                                     <GradientStop Color="transparent" Offset="1"/>
  10:                                 </GradientStopCollection>
  11:                             </LinearGradientBrush.GradientStops>
  12:                         </LinearGradientBrush>
  13:                     </Rectangle.Fill>
  14:                 </Rectangle>
  15:                 <Grid x:Name="StackPanel1" Height="29.1333333333334" Margin="5" >
  16:                     <Grid.ColumnDefinitions>
  17:                         <ColumnDefinition Width="40"/>
  18:                         <ColumnDefinition Width="80"/>
  19:                         <ColumnDefinition Width="80"/>
  20:                         <ColumnDefinition Width="160"/>
  21:  
  22:                     </Grid.ColumnDefinitions>
  23:                     <TextBlock FontFamily="Segoe UI"    x:Name="TextBlock1" Grid.Column="1"  Width="Auto"  Text="{Binding Mode=OneWay, Path=FirstName}" Margin="-0.5,0,15.5,12.4666666666666" FontSize="12" FontWeight="Bold" VerticalAlignment="Stretch" Height="Auto"/>
  24:                     <TextBlock  FontFamily="Segoe UI" Margin="0,0,0,0" Width="Auto" Height="16.6666666666668" Grid.Column="1" Grid.ColumnSpan="1" x:Name="TextBlock1_Copy" Text="{Binding Mode=OneWay, Path=LastName}"  d:LayoutOverrides="GridBox" FontSize="10" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" TextTrimming="WordEllipsis"/>
  25:                     <TextBlock  FontFamily="Segoe UI" x:Name="TextBlock2"  Grid.Column="2" Width="60"  Text="{Binding Path=City, Mode=OneWay}" d:LayoutOverrides="None" FontSize="10" VerticalAlignment="Stretch" Margin="8.005,0,11.995,14.466" Height="Auto" Grid.ColumnSpan="1"/>
  26:                     <TextBlock FontFamily="Segoe UI"  d:LayoutOverrides="None" FontSize="10"  FontWeight="Bold" VerticalAlignment="Stretch" Margin="0,14.401,0,0.065" Width="60" Height="Auto" Grid.Column="2" Grid.ColumnSpan="1" x:Name="TextBlock2_Copy" Text="{Binding Mode=OneWay, Path=Region}"  HorizontalAlignment="Center" Background="{x:Null}"/>
  27:                     <TextBlock  FontFamily="Segoe UI" x:Name="TextBlock" Grid.Column="3"  Text="{Binding Mode=OneWay, Path=OrdersCount}" FontSize="10" TextAlignment="Left" FontStyle="Normal" FontWeight="Bold" VerticalAlignment="Bottom" Margin="18.4,0,0,-0.001" Height="15.667" HorizontalAlignment="Stretch"/>
  28:                     <TextBlock Margin="18.4,-2.16,-15.8,14.466" Text="{Binding Mode=OneWay, Path=Address}" TextWrapping="NoWrap" Grid.Column="3" VerticalAlignment="Stretch"/>
  29:  
  30:                     <Image Margin="0,0,10,0" Source="{Binding Path=Photo}" Grid.Column="0"  x:Name="image11" Stretch="Fill" Height="29"  Width="27" />
  31:                 </Grid>
  32:             </Grid>
  33:         </DataTemplate>

превратить его в

image

или применив данный DataTemplate

   1: <DataTemplate x:Key="EquityTemplate">
   2:         <Viewbox>
   3:             <Grid>
   4:                 <Image  Source="{Binding Path=Photo}"></Image>
   5:                 <Grid VerticalAlignment="Bottom" HorizontalAlignment="Stretch"  Height="60" >
   6:                     <Rectangle Margin="0" >
   7:                         <Rectangle.Fill>
   8:                             <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
   9:                                 <LinearGradientBrush.GradientStops>
  10:                                     <GradientStopCollection>
  11:                                         <GradientStop Color="#55000000" Offset="0.001"/>
  12:                                         <GradientStop Color="#FF000000" Offset="1"/>
  13:                                         <GradientStop Color="#96000000" Offset="0.369"/>
  14:                                     </GradientStopCollection>
  15:                                 </LinearGradientBrush.GradientStops>
  16:                             </LinearGradientBrush>
  17:                         </Rectangle.Fill>
  18:                     </Rectangle>
  19:                     <StackPanel Orientation="Vertical">
  20:                         <TextBlock FontWeight="Bold"  FontFamily="Segoe UI" Foreground="#FF80A8FE"    x:Name="TextBlock1"   Width="Auto"  Text="{Binding Mode=OneWay, Path=FirstName}"  FontSize="20"  VerticalAlignment="Stretch" Height="Auto"/>
  21:                         <TextBlock  FontWeight="Bold" FontFamily="Segoe UI" Margin="0,5,0,0" Foreground="#FF80A8FE"  Width="Auto" Height="Auto"   x:Name="TextBlock1_Copy" Text="{Binding Mode=OneWay, Path=LastName}"  d:LayoutOverrides="GridBox" FontSize="20" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" TextTrimming="WordEllipsis"/>
  22:                     </StackPanel>
  23:                 </Grid>
  24:             </Grid>
  25:         </Viewbox>
  26:  
  27:     </DataTemplate>

даже в такой!:

image

И это все просто декларативно, без изменения любой логики ассоциированный с ListBox.

Демонстрация этого примера вживую доступна в моем докладе на TechDays.ru.

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

В частности мне прислали подобный пример:

image

Кто-то мне рассказывал, что ради этого они сильно помучились и изменяли структуру визуализации ListBox через переопределение Control Template.

На самом деле есть очень простой способ:

На уровне ресурсов конкретного ListBox, или в вышележащих ресурсах, или в ресурсном файле просто делаем цвет выделения прозрачным (Transparent):

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />

И все:

image

Наиболее правильно это можно сделать в стиле:

   1: <Style x:Key="listBoxStyle1" TargetType="{x:Type ListBox}">
   2:     <Style.Resources>
   3:         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
   4:     </Style.Resources>
   5: ...

Таким образом, данное переопределение будет применяться только к ListBox, ассоциированным с данным стилем, а все остальные элементы будут отрабатывать по умолчанию - архив с данным примером прикреплен к посту.

Источник 1, Источник 2

Posted by Roman Zdebskiy | 3 Comments
Filed under:

Attachment(s): WpfApplication3.zip

Опубликованы веб-трансляции докладов с моим участием про WPF и клиентские технологии с конференции Платформа 2009

  1. Windows Presentation Foundation 3.5 SP1 - новые возможности разработки интерактивных клиентских приложений.
  2. Актуальна ли еще разработка клиентских приложений или настало время писать только под Web?

В докладе "Windows Presentation Foundation 3.5 SP1 - новые возможности разработки интерактивных клиентских приложений" я рассказываю о ключевых новых возможностях WPF и заглядываю немного в будущее по следам анонсов с PDC.

В нашем совместном с Сашей Ложечкиным докладе "Актуальна ли еще разработка клиентских приложений или настало время писать только под Web?" мы рассказываем о текущем положении на современном извечном поле брани клиентских и веб технологий.

Обратите внимание, в плейерах на страницах по ссылкам доступно только первые 10 минут - чтобы просмотреть полностью,  скачайте локально wmv файлы в нужном разрешении. Если вы еще не были на сайте Платформы-Онлайн, может потребоваться бесплатная регистрация.

Posted by Roman Zdebskiy | 1 Comments
Filed under: ,

Добавление обработчика для WPF Control внутри WinForms приложения

Краткий пример, как ответ на вопрос, который получил из Contact Form в блоге.

Думаю, многие знают, что WPF и WinForms можно удобно совмещать в проектах – использовать WPF элементы управления внутри WinForms приложений, чтобы поэтапно расширять визуальные возможности приложения на самых сложных участках, и, наоборот, использовать WinForms элементы управления внутри WPF приложений для быстрого повторного использования кода (существующих элементов управления), когда не хватает времени реализовать что-то существующее для WinForms на WPF.

Об этом и рассказываю и показываю на демонстрациях в кратком 15-минутном вебкасте на TechDays.ru - http://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2 

Из Contact Form в блоге я получил вопрос - “как быстро подключить обработчик для WPF кнопки в WinForms приложении”,  отвечаю:

Создаем новое WinForms приложение

 image

на toolbox в разделе WPF Interoperability выбираем ElementHost и кидаем его на форму

image

это действие также автоматически добавит нам ссылки на сборки WPF:

image

после этого переключаемся в код, создаем кнопку в коде, делаем её потомком ElementHost и подключаем обработчик события Click:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.ComponentModel;
   4: using System.Data;
   5: using System.Drawing;
   6: using System.Linq;
   7: using System.Text;
   8: using System.Windows.Forms;
   9:  
  10: namespace WindowsFormsApplication3
  11: {
  12:     public partial class Form1 : Form
  13:     {
  14:         System.Windows.Controls.Button btn1;
  15:         public Form1()
  16:         {
  17:             InitializeComponent();
  18:             btn1 = new System.Windows.Controls.Button();
  19:             btn1.Click += new System.Windows.RoutedEventHandler(btn1_Click);
  20:             elementHost1.Child = btn1;
  21:         }
  22:  
  23:         void btn1_Click(object sender, System.Windows.RoutedEventArgs e)
  24:         {
  25:             MessageBox.Show("Clicked!");
  26:         }
  27:     }
  28: }

причем при подключении события нам, естественно, помогает IntelliSense:

image

Собственно, все. Нажимаем F5.

image

И получаем хостинг WPF элемента управления внутри WinForms приложения.

Про обратный сценарий, а также про более сложные сценарии – DataBinding, хостинг GridView, смотрите вебкаст - http://www.techdays.ru/Lecture.aspx?LID=3efb4acc-4505-4109-94a5-27056af548d2

Код данного простейшего приложения - прикреплен к данному посту.

Posted by Roman Zdebskiy | 1 Comments
Filed under:

Attachment(s): WindowsFormsApplication3.zip

Лучшие практики разработки производительных и интерактивных приложений на WPF – выложена запись доклада

 

Выложена запись моего доклада осенней серии TechDays (Дней разработчика) вместе с примерами кода и ppt.

image

Лучшие практики разработки производительных и интерактивных приложений на WPF

 

В течение полутора часов она дает ответы на многие вопросы:

  1. Как гарантировать производительность приложения на машинах с разным аппаратным обеспечением?
  2. Как детально профилировать и улучшать производительность WPF приложения?
  3. Как обеспечить четкость отображения мелких деталей на мониторах с низким разрешением?
  4. Как и какие анимационные и интерактивные возможности использовать, чтобы сделать приложение действительно удобным и привлекательным, а не создать мелькающую кучу отвлекающих спецэффектов?
  5. Как нужно создавать WPF приложение в декларативном, а не императивном ключе, чтобы максимально использовать участие дизайнера и Expression Blend, как его инструмент?
  6. Что могут новые элементы управления WPF DataGrid, Calendar и DatePicker?
  7. Какие возможности нам предоставляют ресурсы и мощные DataTemplates?

Буду очень благодарен за ваши комментарии и рекомендации

Спасибо

Posted by Roman Zdebskiy | 5 Comments
Filed under: ,

Подробные пошаговые руководства по функционалу, доступному в Visual Studio 2010 CTP

Удобные HTML документы с пошаговыми инструкциями и скриншотами новых возможностей Visual Studio 2010 CTP

Те, кто уже скачал и запустил 7 Гигабайтовый образ виртуальной машины Visual Studio 2010 CTP, скорее всего, видели эту руководства, но, думаю, многим будет удобнее сначала с ними познакомиться, а потом уже, обнаружив, что-то особенно для себя интересное, выкачивать 7 Гигабайт.

Поэтому публикую сразу архивы руководств.

Архив руководства по возможностям Visual Studio – zip 10 MB

Архив руководства по возможностям ASP.NET – zip 500 KB

Архив руководства по возможностям Visual Studio Team System – zip 3,61 MB

 

 

 

 

 

image image

image image

Привожу здесь же содержание каждого руководства - Table of Content

Posted by Roman Zdebskiy | 3 Comments
Filed under: ,

Интерфейс Visual Studio 2010 будет сделан полностью на WPF

 

Скриншот интерфейса новой студии.

Я об этом рассказывал на осенней серии TechDays (Дней Разработчика), удивился, что данная новость еще не появилась в ленте русскоязычных блогов. Ниже публикую скриншот, публично продемонстрированный Scott Guthrie во время пленарной сессии PDC:

clip_image002

Что важно, использование WPF и MEF позволит легко создавать фактически любые визуализирующие плагины для интерфейса Visual Studio 2010 и, в частности, редактора кода, который как и все, также будет сделан на WPF.

Posted by Roman Zdebskiy | 10 Comments
Filed under: , ,
More Posts Next page »
 
Page view tracker