2. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
3.
4. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
5. WPF
Windows Presentation Foundation (WPF) – nazwa silnika graficznego i API bazującego na .NET 3.
WPF integruje interfejs użytkownika, grafikę 2D i 3D,multimedia, dokumenty (nazwa kodowa Metro) oraz
generowanie/rozpoznawanie mowy.
API w WPF opiera się na języku XML, dokładniej na jego implementacji o nazwie XAML
<StackPanel x:Name="contentPanel" Margin="8,32,0,0">
<TextBlock Text="Hello, world!" Margin="0,0,0,40"/>
<TextBlock Text="What's your name?"/>
<StackPanel x:Name="inputPanel" Orientation="Horizontal" Margin="
0,20,0,20">
<TextBox x:Name="nameInput" Width="280" HorizontalAlignment="
Left"/>
<Button x:Name="inputButton" Content="Say "Hello""/>
</StackPanel>
<TextBlock x:Name="greetingOutput"/>
</StackPanel>
7. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
8.
9. Różnice między wzorcami
W MVC kontroler obsługuje zdarzenia, manipuluje modelem, który zawiera logikę
biznesową, widok wyświetla dane z modelu. Jeden kontroler obsługuje kilka widoków.
W MVP dane z modelu są przekazywane do presentera a nie bezpośrednio do widoku,
presenter przekazuje je do widoku. Jeden presenter odnosi się do jednego widoku.
W MVVM dane z modelu są przekazywane do VievModelu, który może obsługiwać kilka
widoków. Widok nie wie nic o ViewModelu, wymaga tylko potrzebnych danych.
10.
11. MVVM
● It separates the business and presentation layers, like MVP and MVC.
● Improve Structure/separation of concerns (View, ViewModel and Model).
● Enable a better Design/Developer Workflow.
● Enhance simplicity and testability.
● Enabled by the robust data binding capability of XAML.
● No need to use a code behind file (minimalist code-behind file).
● Provides application development ability for multiple environments.
● Powerful Data Binding, command, validation and much more.
● The designer and developer can work together.
12. Wady MVVM
● komplikacja kodu - ViewModel nie może komunikować się z warstwą View,
co w pewnych sytuacjach bardzo komplikuje powiązania,
● do obsługi jednego widoku należy tworzyć wiele klas, co sprawia że projekt
jest bardziej rozbudowany,
● duża ilość klas bazowych.
13. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
14. Model
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
public Person(String First, String Last)
{
FirstName = First;
LastName = Last;
}
}
15. View Model
public ObservableCollection<Person> Persons { get; set; }
public PersonViewModel()
{
Persons = new ObservableCollection<Person>()
{
new Person("Jan", "Kowalski"),
new Person("John","Smith")
};
}
17. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
20. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania
21.
22.
23. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● UWP, Adaptive triggers -> live coding
● Wasze pytania
28. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● UWP, RelativePanel -> live coding
● Wasze pytania
29. <RelativePanel BorderBrush="Gray" BorderThickness="10">
<Rectangle x:Name="RedRect" Fill="Red" MinHeight="100" MinWidth="100"/>
<Rectangle x:Name="BlueRect" Fill="Blue" MinHeight="100" MinWidth="100"
RelativePanel.RightOf="RedRect" />
<!-- Width is not set on the green and yellow rectangles.
It's determined by the RelativePanel properties. -->
<Rectangle x:Name="GreenRect" Fill="Green" MinHeight="100" Margin="0,5,0,0"
RelativePanel.Below="RedRect"
RelativePanel.AlignLeftWith="RedRect"
RelativePanel.AlignRightWith="BlueRect"/>
<Rectangle Fill="Yellow" MinHeight="100"
RelativePanel.Below="GreenRect"
RelativePanel.AlignLeftWith="BlueRect"
RelativePanel.AlignRightWithPanel="True"/>
</RelativePanel>
RelativePanel
36. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● UWP, DeviceFamily specific views -> live coding
● Wasze pytania
39. DeviceFamily specific views - overload
public MainPage()
{
if (AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
{
if (usePrimary)
{
InitializeComponent(new Uri("ms-appx:///PrimaryMainPage.xaml", UriKind.Absolute));
}
else
{
InitializeComponent(new Uri("ms-appx:///SecondaryMainPage.xaml", UriKind.Absolute));
}
}
else
{
InitializeComponent();
}
}
40. ● Informacje o środowisku pracy programisty
● WPF - co to właściwie jest? Kontrolki, layout
● Informacje o architekturze MVVM
● Pierwsza aplikacja MVVM -> live coding
● MVVM Light
● Aplikacja uniwersalna - co to jest?
● Aplikacja uniwersalna, Adaptive triggers, RelativePanel -> live coding
● Wasze pytania