Presentation is loading. Please wait.

Presentation is loading. Please wait.

КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.

Similar presentations


Presentation on theme: "КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions."— Presentation transcript:

1 КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions

2 agenda What’s new and different for XAML developers in Windows 8 –Connecting to services to get data –Asynchronous patterns –Local data –How to format your data for Windows 8 controls You’ll leave with examples of how to Connect to web and local data Use data in Windows 8 Metro style apps

3 synchronous vs. asynchronous

4

5 // синхронная версия private void OnButtonClick() { TextBox.Text = new WebClient().DownloadString("http://example.com"); } private void OnButtonClick() { var dispatcher = Deployment.Current.Dispatcher; var client = new WebClient(); client.DownloadStringCompleted += (s, e) => { var result = e.Result; dispatcher.BeginInvoke(() => TextBox.Text = result); }; client.DownloadStringAsync(new Uri("http://example.com")); }

6 Представьте асинхронный мир без callbacks async. & await!

7 async превращает ваш метод в асинхронный await возвращает результат в основной поток по завершению выполнения задачи работает с любым объектом, у которого есть метод GetAwaiter()

8 async & await private void OnButtonClick() { FetchAll(); } public async void FetchAll() { var client = new WebClient (); string xml = await client.DownloadStringTaskAsync(uri); TextBlock.Text = xml; }

9 async & await var Feeds = new ObservableCollection (); public async Task GetFeedsAsync() { Task feed1 = GetFeedAsync(“http://example.com");... this.Feeds.Add(await feed1);... }

10 использование данных So you’ve downloaded data asynchronously, now what? –Your familiar LINQ skills still apply Binding to controls –ListBox –GridView Grouping in GridView controls –Using IGroupInfo

11 привязка данных (data binding) привязка данных – мост между UI и бизнес логикой может быть декларативной (XAML) или программной (в коде) модели привязки данных –One-Way –Two-Way –One-Time

12 value converters public class MyValueConvertor : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return Math.Round((double) value); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; }

13 value converters // объявляем пространство имен xmlns:converter="clr-namespace:MyNamespace.MyValueConverter“ // объявляем в ресурсах конвертер // пример использования:

14 привязка данных к модели public class FeedData { public string Title { get; set; } public string Description { get; set; } public DateTime PubDate { get; set; } private var _Items = new List (); // ObservableCollection public List Items { get { return this._Items; } }

15 привязка данных к модели

16 DEMO: DATA BINDING

17 получение данных Сервис-ориентированные приложения –XML-over-HTTP –JSON-over-HTTP –ASMX Web Services –oData локальное хранилище

18 элементы управления Присутствуют: ListBox, ComboBox, FlipView, ListView (JumpViewer), GridView (ListView + Wrap панель внутри ItemsPanelTemplate), CarouselPanel Отсутствуют (возможно появятся в Toolkit): DataGrid, TabControl, TreeView, Menu, ContextMenu

19 элементы управления

20 ListView <ListView x:Name="ItemListView" ItemsSource="{Binding Items}" DisplayMemberPath="Title" Margin="60,0,0,10">

21 ListView <ListView x:Name="ItemListView" ItemsSource="{Binding Items}" Margin="60,0,0,10"> <TextBlock Text="{Binding Title}" FontSize="24" Margin="5,0,0,0" TextWrapping="Wrap" /> <TextBlock Text="{Binding Author}" FontSize="16" Margin="15,0,0,0"/> <TextBlock Text="{Binding PubDate}" FontSize="16" Margin="15,0,0,0"/>

22 templates Шаблоны позволяют повторно использовать один и тот же XAML код для разных ситуаций <TextBlock Text="{StaticResource AppName}" Style="{StaticResource PageHeaderTextStyle}"/>

23 MVVM Паттерн Model-View-ViewModel — это паттерн, применяющийся при проектировании архитектуры приложения. Первоначально был представлен сообществу Джоном Госсманом (John Gossman) в 2005 году как модификация паттерна Presentation Model. MVVM ориентирован на современные платформы разработки, такие как Windows Presentation Foundation, Silverlight, Windows Phone 7, Windows 8.Windows Presentation Foundation Silverlight

24 MVVM Паттерн MVVM делится на три части: Модель представляет собой данные, необходимые для работы приложения; Вид/Представление (View) - графический интерфейс; Модель вида (ViewModel) является с одной стороны абстракцией Вида, а с другой предоставляет обертку данных из Модели, которые подлежат связыванию.

25 MVVM public class Accomplishment : INotifyPropertyChanged { public string Name { get; set; } public string Type { get; set; }... public event PropertyChangedEventHandler PropertyChanged; private void RaisePropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); }

26 MVVM public class ViewModel { public ObservableCollection Items { get; set; } public ViewModel() { // filling collection Acomplishments.Add(someObject); }

27 MVVM

28 MVVM public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); this.DataContext = new ViewModel(); }

29 ПОЛЕЗНЫЕ ССЫЛКИ И МАТЕРИАЛЫ Часть 6

30 Async homepage: www.msdn.com/vstudio/async www.msdn.com/vstudio/async What's New for Visual C#: http://msdn.com/en-us/library/hh156499(VS.110).aspx http://msdn.com/en-us/library/hh156499(VS.110).aspx What's New for Visual Basic: http://msdn.com/en-us/library/we86c8x2(VS.110).aspx http://msdn.com/en-us/library/we86c8x2(VS.110).aspx Consuming a JSON Service in Window 8 Metro Style Application http://www.c-sharpcorner.com/UploadFile/65fc13/consuming-json-in-window- 8-metro-style-application/ http://www.c-sharpcorner.com/UploadFile/65fc13/consuming-json-in-window- 8-metro-style-application/

31 ВОПРОСЫ? wp7rocks.com, @wp7rocks_com


Download ppt "КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions."

Similar presentations


Ads by Google