Restart Blog
Hallo sehr geehrte Leser meines Blogs,
durch Private und Berufliche Veränderungen habe ich lange Zeit diesen Blog vernachlässigt.
Das wird sich ändern ich starte wieder Voll durch und werde wieder in der Mobilen Szene aktiv arbeiten. Seit gespannt was sich tun.
Windows 8 Expression Blend Template für Metro Design
Da ich so langsam anfange mich mit Win8 zu beschäftigen, habe ich einen coolen Beitrag bei Timmy Kokke gefunden. Er zeigt wie man relativ einfach ein App erstellt mit Expression Blend.
Es gibt schon Templates für Metro Style. So kann man recht schnell das Design erstellen. Es macht echt Spass mit diesem Tool zu arbeiten. Möchte es jedem Entwickler ans Herz legen weil es einem das Leben leichter macht.
Schaut euch mal den Post an..
Quelle :
Discovering Expression Blend 5 – TemplatesAnleitung zur Planung einer App
Wie jeder gute Entwickler weiss, um gute Software zuschreiben benötigt es guter Planung. Dieses ist auch bei der Entwicklung von Apps für WP7 und WP8 nötig. Aber für die Windows Phone Plattform werden sehr gute Tools angeboten. Einen Vorschlag wie eine Entwicklung vonstatten gehen kann, zeigt der Blogbeitrag Metro App Diary.
Es werden verschiedene Tool mit angesprochen, schaut einfach diesen Post mal an.
Quelle:
HttpWebRequest und Tombstoning in WP7
Für eine aktuelle App muss ich mit Webservices arbeiten, und es ist schon echt sportlich das Handling mit mehreren Webservice Aufrufen. Aber wo es wirklich schwierig ist, Wenn mitten in der Abfrage auch noch Tombstoning und Application Switching unterstützt wird wird es echt kompliziert. Aber habe einen Lösungsansatz gefunden.
catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled)
MessageBox.Show("Looks like your request was interrupted by tombstoning");
else { using (HttpWebResponse response = (HttpWebResponse)e.Response)
{ MessageBox.Show("I got an http error of: " + response.StatusCode.ToString()); } } }
Abb.: try catch an wird auf WebException geprüft
Durch diese Fehlerbehandlung ist es möglich die Oberfläche zu informieren was passiert ist.Es sieht einfach aus aber Trick liegt eben im Detail.
Quelle:
HttpWebRequest (WebClient) And Tombstoning in Windows Phone 7Die Wolke liefert Daten
Für zukünftige Aktivitäten im Business Bereich bietet Microsoft ja SQL Azure auf seiner Cloud Windows Azure an. Seit einer gewissen Zeit arbeite ich mich so ein wenig dort ein. Jetzt habe ich gestern einen Post gefunden wie man die Datenhaltung aufbaut in Verbindung mit WP7.
Abb.: Datenhaltung SQL Azure nach WP7
In einer Step für Step Anleitung wird vom Service Contract über den Service hin zur fertigen Anwendung alles ausführlich beschrieben. Der Transfer geht über JSON DTO Service. Es ist wirklich nicht so schwer dieses zuverstehen. Hier noch ein paar Zeilen Code:
using System.Runtime.Serialization;
namespace RESTJSONStudentsData
{
[DataContract]
public class PersonDTO
{
[DataMember]
public string StudentId { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
}
}
Abb.: Data Contract
Und jetzt nich die WCF Verbindung kurz beschrieben:
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace RESTJSONStudentsData
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate=“/Persons“,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json]
List<PersonDTO> GetPersons();
}
}
Hier sollte hervorgehoben werden die Json Format Einstellungen. Diese können dann ganz einfach per DataContractJsonSerializer
konvertiert werden. So ist es echt einfach geworden.
Quelle:
Data from Cloud on Windows Phone
ApplicationBar in neuen Gewand
Auf Windows Phone Geek ist ein Post über eine Advanced Application Bar erschienen. Mit diesem Control kann man nun auch die Visibility und ICommand benutzen, was natürlich die MVVM Pattern nutzenden Entwickler freuen wird.
Mit ein paar Zeilen Code ist eine ansprechende App Bar mit dem oben beschriebenen Support verfügbar.
<
Sh:AdvancedApplicationBar
>
<
Sh:AdvancedApplicationBarIconButton
IsEnabled
=
"{Binding AppBarIconButtonEnabled}"
Text
=
"{Binding AppBarIconButtonText}"
IconUri
=
"{Binding IconUri}"
Click
=
"AdvancedApplicationBarIconButton_Click"
/>
<
Sh:AdvancedApplicationBarIconButton
Text
=
"{Binding AppBarIconButtonText}"
IconUri
=
"{Binding AppBarIconButtonText}"
Visibility
=
"{Binding Visibility}"
Command
=
"{Binding DeleteCommand}"
CommandParameter
=
"42"
/>
<
Sh:AdvancedApplicationBarIconButton
Text
=
"static text"
IconUri
=
"/Images/appbar.feature.settings.rest.png"
/>
<
Sh:AdvancedApplicationBarMenuItem
Text
=
"MenuItemTxt"
/>
</
Sh:AdvancedApplicationBar
>
Besonders Cool ist aber der Support für Panorama bzw. Pivot Control. So kann jetzt innerhalb jedes Tab eine Application Bar mit unterschiedlichen Buttons aufgebaut werden. Für mich steht fest dieses Control kommt in meine nächste Entwicklung.
Quelle:
Advanced ApplicationBar for Windows PhoneAdvanced ApplicationBar for Windows Phone
MetroFlow ein Control der neuen Generation
Wer Apps mit vielen Bildern oder Video Anzeige hat sollte sich mal das neue MetroFlow Control vom Coding4Fun toolkit beschäftigen. Auf WindowsPhoneGeek, wir in einem ersten Beispiel beschrieben wie dieses Control funktioniert.
Alles was benötigt wird ist die neuste Version des Coding4Fun Toolkits.
Mit nur wenigen Zeilen Code ist schon eine erste Anzeige des Controls möglich,
<
c4f:MetroFlow
>
<
c4f:MetroFlowData
Title
=
"Sample 1"
/>
<
c4f:MetroFlowData
ImageUri
=
"Images/bmw1.jpg"
Title
=
"BMW 1"
/>
<
c4f:MetroFlowData
ImageUri
=
"Images/bmw1.jpg"
/>
</
c4f:MetroFlow
>
Abb.: Control in Action
Viele weitere Beispiel findet ihr unter den Ouellen
Quellen:
Coding4Fun Toolkit Getting Started with the Coding4Fun toolkit MetroFlow ControlNavigation mit Service
Der NavigationService im MVVM ist für die Steuerung zwischen Views und ViewModel. Wie man diesen Service erstellt und einsetzt, dass kann man im Rob Garfoot’s Blog in seinem aktuellen Post lesen.
Hier das grundliegende Interface:
public
interface
INavigationService
{
void
Navigate(
string
url);
}
public
class
NavigationService : INavigationService
{
private
readonly
System.Windows.Navigation.NavigationService _navigationService;
public
NavigationService(System.Windows.Navigation.NavigationService navigationService)
{
_navigationService = navigationService;
}
public
void
Navigate(
string
url)
{
_navigationService.Navigate(
new
Uri(url, UriKind.RelativeOrAbsolute));
}
}
public
interface
INavigable
{
INavigationService NavigationService {
get
;
set
; }
}
public
static
class
Navigator
{
public
static
INavigable GetSource(DependencyObject obj)
{
return
(INavigable)obj.GetValue(SourceProperty);
}
public
static
void
SetSource(DependencyObject obj, INavigable value)
{
obj.SetValue(SourceProperty, value);
}
public
static
readonly
DependencyProperty SourceProperty =
DependencyProperty.RegisterAttached(
"Source"
,
typeof
(INavigable),
typeof
(Navigator),
new
PropertyMetadata(OnSourceChanged));
private
static
void
OnSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Page page = (Page) d;
page.Loaded += PageLoaded;
}
private
static
void
PageLoaded(
object
sender, RoutedEventArgs e)
{
Page page = (Page)sender;
INavigable navSource = GetSource(page);
if
(navSource !=
null
)
{
navSource.NavigationService =
new
NavigationService(page.NavigationService);
}
}
}
<
navigation:Page
x:Class
=
"SLNavigation.Page1"
mc:Ignorable
=
"d"
xmlns:navigation
=
"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:SLNavigation
=
"clr-namespace:SLNavigation"
d:DesignWidth
=
"640"
d:DesignHeight
=
"480"
Title
=
"Page1 Page"
SLNavigation:Navigator.Source
=
"{Binding}"
>
Augmented Reality XAML Control für WP7 und WinRT
Ich habe ja schon über Augmented Reality Theorie berichtet, aber jetzt hat Morten Nielsen in seinem Blog einen Post erstellt, wie man ein XAML Control erstellt. Das Besondere daran ist, das es nicht nur das Windows Phone unterstützt sondern auch die kommende Windows Version 8 oder besser bekannt für Entwickler Win RT.
Mit diesem Control baue ich eine Informations App für Industrieanlagen. Nun zeige ich noch einige Codeauschnitte:
<ar:ARPanel> <TextBlock Text="North" ar:ARPanel.Direction="0,0" /> <TextBlock Text="East" ar:ARPanel.Direction="0,90" /> <TextBlock Text="South" ar:ARPanel.Direction="0,180" /> <TextBlock Text="West" ar:ARPanel.Direction="0,270" /> <TextBlock Text="Up" ar:ARPanel.Direction="90,0" /> <TextBlock Text="Down" ar:ARPanel.Direction="-90,0" /> </ar:ARPanel>
Abb.: AR Control Panel in Xaml
Nachfolgend noch ein Beispiel wie man den Motion Sensor in Win RT und Windows Phone gemeinsam nutzen kann.
#if WINDOWS_PHONE if (Microsoft.Devices.Sensors.Motion.IsSupported) { motion = new Microsoft.Devices.Sensors.Motion(); motion.CurrentValueChanged += motion_CurrentValueChanged; motion.Start(); #elif WINRT motion = Windows.Devices.Sensors.OrientationSensor.GetDefault(); if (motion != null) { motion.ReadingChanged += motion_CurrentValueChanged; #endif } else { throw new InvalidOperationException("Motion sensor not supported on this device"); } #endif
Quellen:
Augmented Reality on Windows Phone and Windows 8 Metro style apps