Archive | August 2011

Mango schlägt Alarm,

oder wie kann man als Developer die neuen Alarm Klassen nutzen. In einer neuen App benötige ich diese Funktionen und da ist mir gerade der folgende Post von Shawn Wildermuth Windows Phone 7.1 SDK is Alarming aufgefallen.

alarms

Mit dem Mango Update kann diese API nutzen,

 

 

 

 

Abb: Alarm Demo App

// Alarm Name (unique per app)
var alarmName = Guid.NewGuid().ToString();
// Create the Alarm
var alarm = new Alarm(alarmName)
{
  // When the Alarm should sound
  BeginTime = DateTime.Now.AddMinutes(1),
  // The Message in the Alarm
  Content = "Mango Alarm",
  // Exists on Alarms, but it not used
  //Title = "Not used!",
  // What sound to play for the alarm
  Sound = new Uri("alarm.wav", UriKind.Relative)
};
Die API ist im System.Phone.Scheduler Namespace zuhause und bietet alles was man braucht um Alarm – Funktionalität in einer eigenen App zu nutzen.
Quelle:
Windows Phone 7.1 SDK is Alarming
Advertisements

Textbox Deluxe in WP7

, oder wie hole ich das beste aus dem Textbox Usercontrol herraus.

Auf WindowsPhoneGeek Blog gibt es einen neuen Post in dem die Textbox besonders beschrieben wird und was man alles schönes damit machen kann durch ein paar Zeilen C# oder XAML.

clip_image002

clip_image004

 

 

 

 

 

 

 

 

Nicht nur Password, oder Texte können farblich oder nicht sichtbare angezeigt werden.
Sondern auch wie in diesem Beispiel:

clip_image002[4]

image

<toolkit:PhoneTextBox Hint="Password" LengthIndicatorVisible="True" LengthIndicatorTheshold="10" />

Durch einfaches Setzen von dem Property LengthIndicatorTheshold ist eine Längenanzeige in der Textbox enthalten. Weiter coole Propertys werden im Post auch noch ausführlich vorgestellt.

Quelle:
 
Windows Phone Toolkit PhoneTextBox in depth

Neue Ideen für MVVM Pattern

Erno de Weerd, hat einen neuen Ansatz des MVVM Patterns in seinem Blog infoSupport beschrieben. Hier wird mit Hilfe von Reflections eine Implementierung geschaffen die flexibler und robuster auf Veränderungen des Views und des Models reagiert und somit für den Entwickler Zeit spart.

using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
using System.Windows;

namespace MVVM
{
public class ViewModelBase<T> : INotifyPropertyChanged
{
public App Application
{
get
{
return App.Current as App;
}
}

#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged<TProperty>(
Expression<Func<T, TProperty>> propertyExpression)
{
MemberExpression memberExpression = propertyExpression.Body
as System.Linq.Expressions.MemberExpression;
if (memberExpression == null || (memberExpression != null &&
memberExpression.Member.MemberType != MemberTypes.Property))
{
throw new ArgumentException(
„The specified expression does not represent a valid property“);
}
OnPropertyChanged(memberExpression.Member.Name);
}

protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler p = PropertyChanged;
if (p != null)
{
p(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}

Abb.: Base Class für das ViewModel

Sprachen unabhängig zu sein hat bei der App Entwicklung einen Marktentscheidenen Vorteil und ist rechtzeitig mit einzuplanen bei der Entwicklung.

using System;
using System.ComponentModel;
using System.Linq.Expressions;
using System.Reflection;
using System.Windows;

namespace MVVM
{
public class ViewModelBase<T> : INotifyPropertyChanged
{
private static Example.Resources.Cultures.AppResources _uiTexts = new Resources.Cultures.AppResources();

public Example.Resources.Cultures.AppResources UITexts
{
get
{
return _uiTexts;
}
}

public void ChangeLanguage(string language)
{
Example.Resources.Cultures.AppResources.Culture = new System.Globalization.CultureInfo(language);
OnPropertyChanged(„UITexts“);
}

public App Application
{
get
{
return App.Current as App;
}
}

#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged<TProperty>(
Expression<Func<T, TProperty>> propertyExpression)
{
MemberExpression memberExpression = propertyExpression.Body
as System.Linq.Expressions.MemberExpression;
if (memberExpression == null || (memberExpression != null &&
memberExpression.Member.MemberType != MemberTypes.Property))
{
throw new ArgumentException(
„The specified expression does not represent a valid property“);
}
OnPropertyChanged(memberExpression.Member.Name);
}

protected void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler p = PropertyChanged;
if (p != null)
{
p(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}

Abb.: Ressourcen Handles

Und so einfach ist der Einsatz im XAML:

<TextBlock x:Name=“PageTitle“
Text=“{Binding UITexts.LocationsHeader}“ />

Quelle:

Windows Phone 7 MVVM ViewModel ideas

Frisches Futter für App Designer

Eine neue Episode über Design Fragen ist beim Altmeister John Papa als Video zu finden. Dieses mal zu zum wiederholten Mal: Corrina

 

image

Es geht hauptsächlich um Wireframes und dessen Nutzung für App Developer.

Quellen:

John Papa Blog
Channel9

 

Unit Testing für Apps

Ein nicht zu unterschätzender Teil der Entwicklung sollte das Unit Testen der Funktionen einer App sein.

Wie man sowas in Silverlight und WP7.1 ab besten anstellt, wird anhand eines Beispiels auf dem Blog von

Diary of a .Net Fan …

beschrieben. Mit Hilfe vom Silverlight Unit Test Framework von Jeff Wilcox ist es möglich auch auf WP7 Unittesting konfortable zu erstellen.

addReference

ref
Abb.: Einbinden der Reference

Windows Phone HubTile

Mit dem neuen Release von den Phone Toolkit August 2011(7.1 SDK), kommen einige neue Controls und Funktionen auf den APP Developer zu.

Diesesmal möchte ich auf die HubTiles eingehen. Gerade passe ich eine WP7.0 App an und dort passt dieses neue Control hervorragend rein. Somit habe ich mir auf WindowsPhoneGeek Blog den neusten Teil über dieses Control zur Hilfe genommen.

image

Abb.: Animationen vom HubTile

Nach dem Download vom Toolkit muss nur die Referenz gesetzt werden und schon mit einigen Zeilen Code ist das Control eingebunden.

Xaml Ansicht:

<toolkit:HubTile Title="HubTile Title" Message="This is HubTile message!" x:Name="hubTile"/>
C# Ansicht:
HubTile hubTile = new HubTile();
hubTile.Message = "This is HubTile message!";
hubTile.Title = "HubTile Title";
Quelle:

 

Podcast Player Demo in HTML5 auf einem IE9

as HTML5 immer mehr in der Webdesigner Szene bekannt wird, und mehr und mehr genutzt wird hat sicher einen Grund. Dieser Grund liegt sicher auch daran das man endlich mit Audio, Videos und Mediendaten einfach umgehen kann.

Ein cooles Demo hat Scott Hanselman in seinem Blog gepostet:

2
3
4
5
6
7
8
9
10
11
12
13
<audio id="audio-2-0-4-taste" preload="none" src="http://traffic.libsyn.com/devlife/204-Taste.mp3"></audio>
<div class="episode">
    <a href='post/2-0-3-education' class="showlink">
        <img src="Images//203-lead.png"
            alt="2.0.3 Education" width="320" height="220"/>
        <div class='title'>
            <p>2.0.3 Education</p>
            <div class='description'>
                <p>Scott and Rob talk to two developers about the role education has played in their careers</p>
            </div>
        </div>
    </a>
</div>

Quelle :

Creating a Podcast Player with HTML5 for a IE9 Pinned Site on Windows 7

Migration auf Mango

Shawn Wildermuth, hat in seinem Blog beschrieben wie man als Developer von WP7 eine Projekt-Solution für beide Versionen von WP7 und WP7.1 aufbaut. Dieses ist sicher eine nicht so ganz einfache Sache aber machbar mit der nötigen Feinplanung und etwas Umstellung von bestehenden Apps.

Anhand seiner Phoney Tools beschreibt Wildermuth seine Umstellung des Projektes.

image

Abb.:  Solutionaufbau mit Migration von Mango

 

Visual Studio Project Settings

Abb.: Build Symbole für Mango

Diese können dann im Projekt an den spezifischen Stellen genutzt werden.

#if MANGO
  [Obsolete("Class is no longer required in Windows Phone 7.1.")]
#endif
  public class GameTimer
  {
    ...
Quelle:

Neue WP7 Icons

Wer nicht so ein Grafik Genie ist und immer freie Icons sucht wie ich, hat wieder ein Schnäppchen gefunden.

 

Icons

Auf dem Blog von Templarian findet Ihr neues Futter für WP7.

Quelle:

Templarian

Dynamischer SystemTray in Mango

Auf dem VBandi’s blog habe ich einen coolen Post gefunden wie man den SystemTray anpassen kann, im Post wird gezeigt was an neuen Propertys vorhanden ist und wie man Sie grafisch hip darstellen kann.

1: <phone:PhoneApplicationPage

2: x:Class=“SystemTrayDemo.MainPage“

3: xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8220;

4: xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml&#8220;

5: xmlns:phone=“clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone“

6: xmlns:shell=“clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone“

7: xmlns:d=“http://schemas.microsoft.com/expression/blend/2008&#8243;

8: xmlns:mc=“http://schemas.openxmlformats.org/markup-compatibility/2006&#8243;

9: mc:Ignorable=“d“ d:DesignWidth=“480″ d:DesignHeight=“768″

10: FontFamily=“{StaticResource PhoneFontFamilyNormal}“

11: FontSize=“{StaticResource PhoneFontSizeNormal}“

12: Foreground=“{StaticResource PhoneForegroundBrush}“

13: SupportedOrientations=“Portrait“ Orientation=“Portrait“

14: shell:SystemTray.IsVisible=“True“

15: shell:SystemTray.BackgroundColor=“LightGray“

16: shell:SystemTray.ForegroundColor=“Blue“>

17:  

18: <!–LayoutRoot is the root grid where all page content is placed–>

19: <Grid x:Name=“LayoutRoot“ Background=“Transparent“>

20: <Ellipse Fill=“Azure“ />

21:  

22:  

23: </Grid>

24:  

25:  

26: </phone:PhoneApplicationPage>

Durch diese Zeilen wird der SystemTray schon angezeigt:

image

image

shell:SystemTray.Opacity=“0.5″

Diese Zeile passt schon gleich in der 2 Abbildung den Style an und schon ist ein neuer Effekt vorhanden.
Aber richtig überrascht werdet Ihr sicher wenn ihr das Video schaut.

 

Quelle:

SurfCube on Mango Part 2– The SystemTray