Microsoft Corporation http://www.jeff.wilcox.name/
2
3
Multimedia Display Codec acceleration 480x800 QVGA Other resolutions in the future Capacitive touch Memory 4+ contact points 256MB RAM or more 8GB Flash or more Sensors A-GPS, Accelerometer, GPU Compass, Light DirectX 9 acceleration Camera 5+ megapixels CPU ARMv7 Hardware buttons Start, Search, Back 4
5
6
8
9
<Grid> <TextBox Text =“Hello World" TextChanged =“ MyMessageChangedHandler"/> </Grid> 10
11
<Style TargetType="TextBlock" x:Key="SubHeadingText"> <Setter Property="FontSize ” Value="42" /> <Setter Property=" Foreground“ Value="Blue" /> </Style> <TextBlock Text =“What’s up?“ Style =“{ StaticResource SubHeadingText }“/> 13
14
<TextBlock Text =“{Binding Name}” Foreground =“{ Binding Name, Converter={StaticResource MyPersonForegroundBrushSelector }}” /> 15
link // Bad for performance NotifyPropertyChanged(()=> FullName); // Good NotifyPropertyChanged (“ FullName ”); // Great NotifyPropertyChanged(PropertyFullName); 16
17
18
19
20
21
22
24
link 25
26
<ListBox.ItemTemplate> <DataTemplate> <StackPanel> <StackPanel Orientation="Horizontal"> <Image Source="{Binding PicSource}" Width="{Binding ApproxWidth}"/> <controls:MyPresenceControl User="{Binding}" OnlineText="{Binding ElementName=Resources, Path=UserOnline, Conve rter={StaticResource CurrentCultureConverter}}"/> <TextBlock Text="{Binding Name}" Foreground="{Binding Name, Converter={StaticResource MyNameForegro undConverter}, ConverterParameter='Red,Blue'}"/> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> 27
<ListBox.ItemTemplate> <DataTemplate> <Grid Height="180"> <Grid.ColumnDefinitions> <ColumnDefinition Width="120"/> <ColumnDefinition Width="80"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Image Source="{Binding PicSource}" Width="110" Height="110"/> <Image Source="{Binding PresencePic}" Width="70" Height="30" Grid.Column="1" Visibility="{Binding PresenceVisible}"/> <!-- clipped for space --> 28
<ListBox> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel/> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> 29
30
31
32
33
34
35
private void Dispatch(Action action) { // No need for a dispatcher invoke, this will be quicker. if (Dispatcher.CheckAccess()) { action(); } else { Dispatcher.BeginInvoke(action); } } 36
37
BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += BackgroundWork; bw.RunWorkerCompleted += (x, xe) => { // This is called on the UI thread }; bw.RunWorkerAsync(); private void BackgroundWork(object sender, DoWorkEventArgs e) { // This is where your background magic happens. } 38
39
<Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="180"/> </Grid.RowDefinitions> <MediaElement Grid.RowSpan="2" Source="/Intro.wmv" AutoPlay="True" Stretch="UniformToFill"/> <Grid Grid.Row="1" Background="Black" Opacity=".6"> <!-- Put playback controls here --> </Grid> </Grid> 40
MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher(); mediaPlayerLauncher.Media = new Uri (“Intro.wmv”, UriKind.Relative); mediaPlayerLauncher.Location = MediaLocationType.Data; mediaPlayerLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop; mediaPlayerLauncher. Show (); 41
42
43
44
private void hyperlinkButton1_Click( object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/SecondPage.xaml", UriKind.RelativeOrAbsolute) ); } 45
private void button1_Click( object sender, RoutedEventArgs e) { NavigationService.GoBack(); } 46
private void passParam_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/SecondPage.xaml?msg=" + textBox1.Text, UriKind.Relative)); } protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); string msg = string.Empty; if (NavigationContext.QueryString.TryGetValue("msg", out msg)) textBlock1.Text = msg; } 48
NavigationService.Navigate( new Uri("/SecondPage.xaml+?Param=value" , UriKind.RelativeOrAbsolute 49
50
PortraitOrLandscape Portrait link 52
53
54
System T ray and Application Bar SystemTray.IsVisible = false; 55
new Uri "http://www.bing.com/" "<b>Hello JAOO Conference!</b>" 60
61
62
63
64
65
Pivot Panorama 66
67
68
69
70
71
72
73
link 74
var deviceMem=(long)DeviceExtendedProperties.GetValue("DeviceTotalMemory"); var app=(long)DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"); var appPeak=(long)DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage"); var managedMemory = GC.GetTotalMemory(false); 75
link 76
77
78
79
80
81
82
83
Not User exits the running User Starts the application (press back application – from the first page) – Launching Event Closing event Closing Launching Running 84
Press Start Load state User is back where Running Open toast to continue she left off Lock screen where she left off Activated Deactivated Tombstoned The application’s (in most process is killed Save state cases) for later use (in most cases)* 85
86
State PhoneApplicationPage 91
92
93
Launchers Choosers PhoneCallTask CameraCaptureTask SearchTask EmailAddressChooserTask SMSComposeTask PhoneNumberChooserTask WebBrowserTask PhotoChooserTask EmailComposeTask SaveEmailAddressTask MarketplaceDetailTask SavePhoneNumberTask MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask MediaPlayerLauncher 95
96
// Declare the PhotoChooserTask object with page scope. 98
102
103
104
105
http://developer.windowsphone.com/ http://silverlight.codeplex.com/ http://www.jeff.wilcox.name/ jwilcox@microsoft.com 106
Recommend
More recommend