SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Windows Presentation Foundation Dawid Cieszyńskicieszak@cieszak.eu
Agenda Co to jest? Do czego służy? Porównanie z Windows Forms Język XAML i przykłady kodu Data Binding i Update Trigger Expression Blend Nowe kontrolki w WPF? Podsumowanie
Co to jest? Windows Presentation Foundation (System.Windows.*) Windows CardSpace Windows Communication Foundation (System.ServiceModel.*) Windows Workflow Foundation (System.Workflow.*)
Do czego służy?
Co to jest? Nowa estetyka Windows Vista Transformacje, animacje, przezroczystość, cieniowanie, efekty trójwymiarowe, itp. Style Wyzwalacze
WPF vs Windows Forms
XAML C# VB.NET <Button Width="100"> OK   <Button.Background> LightBlue   </Button.Background> </Button> Button b1 = new Button(); b1.Content = "OK"; b1.Background = new SolidColorBrush(Colors.LightBlue); b1.Width = 100; Dim b1 As New Button b1.Content = "OK" b1.Background = New _SolidColorBrush(Colors.LightBlue) b1.Width = 100 XAML = ExtensibleApplicationMarkupLanguage HTML?
Przykłady kodu XAML
App.xaml <Application x:Class="WpfApplication1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources>    </Application.Resources> </Application>
MainWindow.xaml <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> </Grid> </Window>
Layout DockPanel StackPanel Grid Canvas
Przykład XAML <Rectangle Fill="Red„Width="150„Height="100" />
Przykład XAML <Grid ShowGridLines="True"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition /> </Grid.RowDefinitions> <Rectangle Fill="Red" Width="150" Height="100„Grid.Column="1"Grid.Row="1"/> </Grid>
Przykład XAML <Button Height="25" Width="100"Grid.Column="0„Grid.Row="0" Click="Button_Click"/> <Rectangle x:Name="rect" Fill="Red"Width="150" Height="100"Grid.Column="1"Grid.Row="1"/> privatevoidButton_Click(object sender, RoutedEventArgs e) { rect.Fill= newSolidColorBrush(Colors.Blue); }
Przykład XAML <Rectangle x:Name="rect" Width="150" Height="100"Grid.Column="1"Grid.Row="1"> <Rectangle.Fill> <LinearGradientBrush> <GradientStop Offset="0" Color="LightBlue" /> <GradientStop Offset="0.4" Color="Blue" /> <GradientStop Offset="0.8" Color="Purple" /> <GradientStop Offset="1.0" Color="Lavender"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle>
Przykład XAML <TextBlockFontFamily="Verdana" FontSize="72„FontStyle="Italic" FontWeight="Bold" >     KOALA <TextBlock.Foreground> <ImageBrushImageSource="Koala.jpg" /> </TextBlock.Foreground> </TextBlock>
Przykład XAML <TextBlock Text="Click to win!" TextDecorations="None" Cursor="Hand" FontSize="14" FontWeight="Bold" MouseEnter="TextBlock_MouseEnter"  MouseLeave="TextBlock_MouseLeave"  MouseLeftButtonUp="TextBlock_MouseLeftButtonUp" /> privatevoidTextBlock_MouseEnter(object sender, MouseEventArgs e) {     ((TextBlock)sender).TextDecorations = TextDecorations.Underline;     ((TextBlock)sender).Foreground = Brushes.Maroon; } privatevoidTextBlock_MouseLeave(object sender, MouseEventArgs e) {     ((TextBlock)sender).TextDecorations = null;     ((TextBlock)sender).Foreground = Brushes.Black; } privatevoidTextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { MessageBox.Show("Congratulations!"); }
Style <Application.Resources> <StyleTargetType="Button" x:Key="GelButton"> <Setter Property="Margin" Value="1,2,1,2"/> <Setter Property="HorizontalAlignment„Value="Left"/> <Setter Property="Template"> <Setter.Value>                 ... </Setter.Value> </Setter> </Style> </Application.Resources> <Button Height="50" Width="250"	Style="{StaticResource GelButton}" Content="Button 1"/>
Style <Application.Resources> <StyleTargetType="Button"> <Setter Property="Margin" Value="1,2,1,2"/> <Setter Property="HorizontalAlignment„Value="Left"/> <Setter Property="Template"> <Setter.Value>                 ... </Setter.Value> </Setter> </Style> </Application.Resources> <Button Height="50" Width="250"Content="Button 1"/>
Data Binding Managed Object ADO.NET Data Source XML Data
Data Binding
Tryby Bindowania OneWay TwoWay OneWayToSource OneTime Cel Źródło
Bindowanie do obiektu namespace MyNamespace { classMyClass     { publicstring ColorName         { get { return"Red"; }         }     } }<DockPanel xmlns:c="clr-namespace:MyNamespace"> <DockPanel.Resources> <c:MyClass x:Key="mySource" /> </DockPanel.Resources> <ButtonBackground="{Binding Path=ColorName,Source={StaticResourcemySource}}">         ... </Button>  </DockPanel>
Bindowanie <DockPanel xmlns:c="clr-namespace:MyNamespace"> <DockPanel.Resources>...</DockPanel.Resources> <DockPanel.DataContext> <Binding Source="{StaticResource mySource}"/> </DockPanel.DataContext> <Button Background="{Binding Path=BackColorName}">         ... </Button> <TextBox Foreground="{Binding Path=ForeColorName}">         ... </TextBox> </DockPanel>
UpdateTrigger <TextBox Width="100"> <TextBox.Text> <Binding Source="{StaticResource myData}"  Path="ColorName" UpdateSourceTrigger="PropertyChanged" /> </TextBox.Text> </TextBox> Kiedy ma następować aktualizacja? ,[object Object]
Explicit
LostFocus
PropertyChanged,[object Object]
DataTemplate <DataTemplate x:Key="myTaskTemplate"> <Border Name="border" BorderBrush="Aqua"	BorderThickness="1" Padding="5" Margin="5"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlockGrid.Row="0"Grid.Column="0" Text="Task Name:"/> <TextBlock Grid.Row="0" Grid.Column="l" Text="{BindingPath=TaskName}"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="Description:" /> <TextBlock Grid.Row="1"Grid.Column="1" Text="{Binding Path.Description}" /> <TextBlock Grid.Row="2"Grid.Column="0"Text="Priority:" /> <TextBlock Grid.Row="2" Grid.Column="1" Text="{BindingPath=Priority}" /> </Grid> </Border> </DataTemplate><ListBox Width="400" Margin="10" ItemsSource="{Binding Source={StaticResource myTodoList}}"ItemTemplate="{StaticResource myTaskTemplate}" HorizontalContentAlignment="Stretch"/>
<Border Width="400"          BorderBrush="Green"          BorderThickness="9">   <StackPanel> <MediaElement Source="aero.wmv" />     <Button>Hello</Button>   </StackPanel> </Border> Audio i Wideo Ronnie Saurenmann (WPF) Różne formaty: WMV, MPEG, Some AVIs Synchronizacha z animacjami
Grafika 2D, Grafika 3D, Obrazy Ronnie Saurenmann (WPF) Grafika 2D Grafika 3D Obrazy
Transformacja i animacja RotateTransform ScaleTransform RenderTransform Efekty: rozmycie, poświata Zmiana każdej właściwości w czasie
Dokumenty, drukowanie Użycie kontrolek Windows Forms XAML Browser Applications (XBAPs) Co jeszcze?
Expression Blend
Nowe kontrolki Datagrid, Ribbon, Visual State Manager WPF Toolkit:http://wpf.codeplex.com/ Office UI Licensing Developer Center: http://msdn.microsoft.com/hr-hr/office/aa973809(en-us).aspx
Demo Ribbon

Weitere ähnliche Inhalte

Was ist angesagt?

Joomla Day Austin Part 2
Joomla Day Austin Part 2Joomla Day Austin Part 2
Joomla Day Austin Part 2Kyle Ledbetter
 
LO QUE ME GUSTA
LO QUE ME GUSTALO QUE ME GUSTA
LO QUE ME GUSTAadflor
 
Presentation1
Presentation1Presentation1
Presentation1Tom Flo
 
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
Xml Xls ed Excel per la produzione espressa di Html - Chiara BettaglioXml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
Xml Xls ed Excel per la produzione espressa di Html - Chiara BettaglioGirl Geek Dinners Milano
 
Remembrance wordles
Remembrance wordlesRemembrance wordles
Remembrance wordlesmrsrawlings
 
Manual al-aire
Manual al-aireManual al-aire
Manual al-airetoponerae
 

Was ist angesagt? (7)

Joomla Day Austin Part 2
Joomla Day Austin Part 2Joomla Day Austin Part 2
Joomla Day Austin Part 2
 
LO QUE ME GUSTA
LO QUE ME GUSTALO QUE ME GUSTA
LO QUE ME GUSTA
 
Presentation1
Presentation1Presentation1
Presentation1
 
Cubo sql
Cubo sqlCubo sql
Cubo sql
 
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
Xml Xls ed Excel per la produzione espressa di Html - Chiara BettaglioXml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
Xml Xls ed Excel per la produzione espressa di Html - Chiara Bettaglio
 
Remembrance wordles
Remembrance wordlesRemembrance wordles
Remembrance wordles
 
Manual al-aire
Manual al-aireManual al-aire
Manual al-aire
 

Andere mochten auch

Augmented reality in_flash_tran_trong_thanh
Augmented reality in_flash_tran_trong_thanhAugmented reality in_flash_tran_trong_thanh
Augmented reality in_flash_tran_trong_thanhTra Dang Meo Gay
 
Прогноз развития рынка теплоизоляционных материалов Украины
Прогноз развития рынка теплоизоляционных материалов УкраиныПрогноз развития рынка теплоизоляционных материалов Украины
Прогноз развития рынка теплоизоляционных материалов УкраиныAgency of Industrial Marketing
 
Исследование рынка теплоизоляции республики Беларусь 2012-2013
Исследование рынка теплоизоляции республики Беларусь 2012-2013Исследование рынка теплоизоляции республики Беларусь 2012-2013
Исследование рынка теплоизоляции республики Беларусь 2012-2013Agency of Industrial Marketing
 
4squares Mouseclick
4squares Mouseclick4squares Mouseclick
4squares Mouseclicksuperproxy
 
Dutchmen Export
Dutchmen ExportDutchmen Export
Dutchmen ExportDutchExp
 
D Mparksalestalkv211 20 09
D Mparksalestalkv211 20 09D Mparksalestalkv211 20 09
D Mparksalestalkv211 20 09denniswmccormack
 
La comunicació d'idees
La comunicació d'ideesLa comunicació d'idees
La comunicació d'ideesAvel·lí
 
Manual professor
Manual professorManual professor
Manual professorAvel·lí
 
Emergencias medicas
Emergencias medicasEmergencias medicas
Emergencias medicasJorge
 
Cost analysis(1)
Cost analysis(1)Cost analysis(1)
Cost analysis(1)Technoshine
 
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)Verimatrix
 
R E S E A R C H J O L L Y (03)
R E S E A R C H  J O L L Y (03)R E S E A R C H  J O L L Y (03)
R E S E A R C H J O L L Y (03)DYUTI
 

Andere mochten auch (20)

Brand-2-Business
Brand-2-BusinessBrand-2-Business
Brand-2-Business
 
Augmented reality in_flash_tran_trong_thanh
Augmented reality in_flash_tran_trong_thanhAugmented reality in_flash_tran_trong_thanh
Augmented reality in_flash_tran_trong_thanh
 
Прогноз развития рынка теплоизоляционных материалов Украины
Прогноз развития рынка теплоизоляционных материалов УкраиныПрогноз развития рынка теплоизоляционных материалов Украины
Прогноз развития рынка теплоизоляционных материалов Украины
 
Исследование рынка теплоизоляции республики Беларусь 2012-2013
Исследование рынка теплоизоляции республики Беларусь 2012-2013Исследование рынка теплоизоляции республики Беларусь 2012-2013
Исследование рынка теплоизоляции республики Беларусь 2012-2013
 
4squares Mouseclick
4squares Mouseclick4squares Mouseclick
4squares Mouseclick
 
Dutchmen Export
Dutchmen ExportDutchmen Export
Dutchmen Export
 
D Mparksalestalkv211 20 09
D Mparksalestalkv211 20 09D Mparksalestalkv211 20 09
D Mparksalestalkv211 20 09
 
#LDD13is
#LDD13is#LDD13is
#LDD13is
 
La comunicació d'idees
La comunicació d'ideesLa comunicació d'idees
La comunicació d'idees
 
Manual professor
Manual professorManual professor
Manual professor
 
Emergencias medicas
Emergencias medicasEmergencias medicas
Emergencias medicas
 
Cv
CvCv
Cv
 
kalenskiy_prom2009
kalenskiy_prom2009kalenskiy_prom2009
kalenskiy_prom2009
 
Integrating spreadsheets, visualization tools, and computational knowledge en...
Integrating spreadsheets, visualization tools, and computational knowledge en...Integrating spreadsheets, visualization tools, and computational knowledge en...
Integrating spreadsheets, visualization tools, and computational knowledge en...
 
sytnik
sytniksytnik
sytnik
 
Cost analysis(1)
Cost analysis(1)Cost analysis(1)
Cost analysis(1)
 
sytnik
sytniksytnik
sytnik
 
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)
"Operator as an App" - The Smart Pay-TV Future in Russia/CIS (in Russian)
 
R E S E A R C H J O L L Y (03)
R E S E A R C H  J O L L Y (03)R E S E A R C H  J O L L Y (03)
R E S E A R C H J O L L Y (03)
 
storoguk
storogukstoroguk
storoguk
 

Windows Presentation Foundation

  • 1. Windows Presentation Foundation Dawid Cieszyńskicieszak@cieszak.eu
  • 2. Agenda Co to jest? Do czego służy? Porównanie z Windows Forms Język XAML i przykłady kodu Data Binding i Update Trigger Expression Blend Nowe kontrolki w WPF? Podsumowanie
  • 3. Co to jest? Windows Presentation Foundation (System.Windows.*) Windows CardSpace Windows Communication Foundation (System.ServiceModel.*) Windows Workflow Foundation (System.Workflow.*)
  • 5. Co to jest? Nowa estetyka Windows Vista Transformacje, animacje, przezroczystość, cieniowanie, efekty trójwymiarowe, itp. Style Wyzwalacze
  • 7. XAML C# VB.NET <Button Width="100"> OK <Button.Background> LightBlue </Button.Background> </Button> Button b1 = new Button(); b1.Content = "OK"; b1.Background = new SolidColorBrush(Colors.LightBlue); b1.Width = 100; Dim b1 As New Button b1.Content = "OK" b1.Background = New _SolidColorBrush(Colors.LightBlue) b1.Width = 100 XAML = ExtensibleApplicationMarkupLanguage HTML?
  • 9. App.xaml <Application x:Class="WpfApplication1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application>
  • 10. MainWindow.xaml <Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> </Grid> </Window>
  • 12. Przykład XAML <Rectangle Fill="Red„Width="150„Height="100" />
  • 13. Przykład XAML <Grid ShowGridLines="True"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition /> </Grid.RowDefinitions> <Rectangle Fill="Red" Width="150" Height="100„Grid.Column="1"Grid.Row="1"/> </Grid>
  • 14. Przykład XAML <Button Height="25" Width="100"Grid.Column="0„Grid.Row="0" Click="Button_Click"/> <Rectangle x:Name="rect" Fill="Red"Width="150" Height="100"Grid.Column="1"Grid.Row="1"/> privatevoidButton_Click(object sender, RoutedEventArgs e) { rect.Fill= newSolidColorBrush(Colors.Blue); }
  • 15. Przykład XAML <Rectangle x:Name="rect" Width="150" Height="100"Grid.Column="1"Grid.Row="1"> <Rectangle.Fill> <LinearGradientBrush> <GradientStop Offset="0" Color="LightBlue" /> <GradientStop Offset="0.4" Color="Blue" /> <GradientStop Offset="0.8" Color="Purple" /> <GradientStop Offset="1.0" Color="Lavender"/> </LinearGradientBrush> </Rectangle.Fill> </Rectangle>
  • 16. Przykład XAML <TextBlockFontFamily="Verdana" FontSize="72„FontStyle="Italic" FontWeight="Bold" > KOALA <TextBlock.Foreground> <ImageBrushImageSource="Koala.jpg" /> </TextBlock.Foreground> </TextBlock>
  • 17. Przykład XAML <TextBlock Text="Click to win!" TextDecorations="None" Cursor="Hand" FontSize="14" FontWeight="Bold" MouseEnter="TextBlock_MouseEnter" MouseLeave="TextBlock_MouseLeave" MouseLeftButtonUp="TextBlock_MouseLeftButtonUp" /> privatevoidTextBlock_MouseEnter(object sender, MouseEventArgs e) { ((TextBlock)sender).TextDecorations = TextDecorations.Underline; ((TextBlock)sender).Foreground = Brushes.Maroon; } privatevoidTextBlock_MouseLeave(object sender, MouseEventArgs e) { ((TextBlock)sender).TextDecorations = null; ((TextBlock)sender).Foreground = Brushes.Black; } privatevoidTextBlock_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { MessageBox.Show("Congratulations!"); }
  • 18. Style <Application.Resources> <StyleTargetType="Button" x:Key="GelButton"> <Setter Property="Margin" Value="1,2,1,2"/> <Setter Property="HorizontalAlignment„Value="Left"/> <Setter Property="Template"> <Setter.Value> ... </Setter.Value> </Setter> </Style> </Application.Resources> <Button Height="50" Width="250" Style="{StaticResource GelButton}" Content="Button 1"/>
  • 19. Style <Application.Resources> <StyleTargetType="Button"> <Setter Property="Margin" Value="1,2,1,2"/> <Setter Property="HorizontalAlignment„Value="Left"/> <Setter Property="Template"> <Setter.Value> ... </Setter.Value> </Setter> </Style> </Application.Resources> <Button Height="50" Width="250"Content="Button 1"/>
  • 20. Data Binding Managed Object ADO.NET Data Source XML Data
  • 22. Tryby Bindowania OneWay TwoWay OneWayToSource OneTime Cel Źródło
  • 23. Bindowanie do obiektu namespace MyNamespace { classMyClass { publicstring ColorName { get { return"Red"; } } } }<DockPanel xmlns:c="clr-namespace:MyNamespace"> <DockPanel.Resources> <c:MyClass x:Key="mySource" /> </DockPanel.Resources> <ButtonBackground="{Binding Path=ColorName,Source={StaticResourcemySource}}"> ... </Button> </DockPanel>
  • 24. Bindowanie <DockPanel xmlns:c="clr-namespace:MyNamespace"> <DockPanel.Resources>...</DockPanel.Resources> <DockPanel.DataContext> <Binding Source="{StaticResource mySource}"/> </DockPanel.DataContext> <Button Background="{Binding Path=BackColorName}"> ... </Button> <TextBox Foreground="{Binding Path=ForeColorName}"> ... </TextBox> </DockPanel>
  • 25.
  • 28.
  • 29. DataTemplate <DataTemplate x:Key="myTaskTemplate"> <Border Name="border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBlockGrid.Row="0"Grid.Column="0" Text="Task Name:"/> <TextBlock Grid.Row="0" Grid.Column="l" Text="{BindingPath=TaskName}"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="Description:" /> <TextBlock Grid.Row="1"Grid.Column="1" Text="{Binding Path.Description}" /> <TextBlock Grid.Row="2"Grid.Column="0"Text="Priority:" /> <TextBlock Grid.Row="2" Grid.Column="1" Text="{BindingPath=Priority}" /> </Grid> </Border> </DataTemplate><ListBox Width="400" Margin="10" ItemsSource="{Binding Source={StaticResource myTodoList}}"ItemTemplate="{StaticResource myTaskTemplate}" HorizontalContentAlignment="Stretch"/>
  • 30. <Border Width="400" BorderBrush="Green" BorderThickness="9"> <StackPanel> <MediaElement Source="aero.wmv" /> <Button>Hello</Button> </StackPanel> </Border> Audio i Wideo Ronnie Saurenmann (WPF) Różne formaty: WMV, MPEG, Some AVIs Synchronizacha z animacjami
  • 31. Grafika 2D, Grafika 3D, Obrazy Ronnie Saurenmann (WPF) Grafika 2D Grafika 3D Obrazy
  • 32. Transformacja i animacja RotateTransform ScaleTransform RenderTransform Efekty: rozmycie, poświata Zmiana każdej właściwości w czasie
  • 33. Dokumenty, drukowanie Użycie kontrolek Windows Forms XAML Browser Applications (XBAPs) Co jeszcze?
  • 35. Nowe kontrolki Datagrid, Ribbon, Visual State Manager WPF Toolkit:http://wpf.codeplex.com/ Office UI Licensing Developer Center: http://msdn.microsoft.com/hr-hr/office/aa973809(en-us).aspx
  • 37. Łatwe tworzenie GUI Automagiczne przekazywanie wartości Prostota i funkcjonalność Oddzielenie logiki od wyglądu Zachwyt użytkownika Podsumowanie
  • 38. Dziękuję <Canvas Width="100" Height="100"><Ellipse Fill="Yellow" Stroke="Black" StrokeThickness="7" Width="100" Height="100" /> <Ellipse Fill="Black" Width="10" Height="15" Canvas.Left="28" Canvas.Top="28" /> <Ellipse Fill="Black" Width="10" Height="15" Canvas.Left="62" Canvas.Top="28" /> <Path Stroke="Black" StrokeThickness="6" Data="M 30,60 Q 50,90 70,60" /> </Canvas>