Software-Empfehlungen, Tipps & Tricks zur Softwareentwicklung und Bedienung von Windows Phone 7 Handy's.
Montag, 27. September 2010
Windows Phone 7 - Emulator Hard - Reset
Um den Emulator zurück zu setzen (Reset) und damit auch die Uhrzeit neu zu stellen ist es möglich die Statusdateien (Statefiles) zu löschen. Diese Dateien "*.dess" findet man unter dem verstecktem Verzeichniss "%ProgramData%\Microsoft\XDE\" also zum Beispiel: "C:\ProgramData\Microsoft\XDE\{E4ABD6D1-E17F-2AD4-B088-2351B2181DC6}.dess"
Samstag, 25. September 2010
Datenbanken für Windows Phone 7
MCObject (kostenlos, Open Source)
WinPhone7DB (kostenlos, Microsoft Public License (Ms-PL))
SiaqoDB (ab $186, Lizenz)
Freitag, 17. September 2010
Windows Phone 7 Developer Tools sind fertig!
Als Web-Downloader:
Download Windows Phone 7 Developer Tools (Web)
oder als Komplettpaket:
Download Windows Phone 7 Developer Tools (.ISO)
Download Windows Phone 7 Developer Tools (Web)
oder als Komplettpaket:
Download Windows Phone 7 Developer Tools (.ISO)
Sonntag, 12. September 2010
Wie verwende ich Resourcen für die Lokalisierung (Localisation) in Windows Phone 7 Seiten (Page) und Controls?
Resourcen für Lokalisierung in einer Windows Phone 7 Seite (Page - xaml)
1. In Visual Studio fügen Sie eine neue Datei vom Typ "Resource" hinzu, diese benennen Sie je nach Verwendung. In unserem Beispiel bleibt der vorgegebene Name "Resource1.resx". Zu dieser Resource wird automatisch eine Code-Behind-Datei erstellt. Daran erkennt man auch die Default-Resource, bei den anderen Sprachen wird keine Code-Behind-Datei erstellt bzw. benötigt.
2. In VS 2010 unter den Eigenschaften des Projekts bei "Application" - "Assembly Informationen" muß nun die Default-Sprache "Neutral Language" auf z.b. English (United States) besser noch nur "English" eingestellt werden. Besser da, da nur "English" noch neutraler ist.
3. Fügen Sie folgende Klasse "LocalizedStrings.cs" zu Ihrem Projekt hinzu:
Die Bezeichnungen müssen entsprechend dem Resource-Klassen-Namen angepasst werden. In diesem Fall heißt die Resource "Resource1" (siehe 4.).
4. In der Resource-Datei werden nun die Texte als Strings erfasst (Beispiel "Greetings"), desweiteren wird der "Access Modifier" auf Public gesetzt:
Name - der Resource, Zugriffsbezeichner.
Value - der Wert der Resource, in diesem Fall der Text der angezeigt werden soll.
Comment - ein optionaler Kommentar
Hinweis: Es können auch andere Resourcen wie Images, Icons, Audio, Files und Others hinzugefügt werden.
5. Auf der Windows Phone 7 Seite wird ein Verweis auf die zu verwendete Resource hinzugefügt - siehe Zeile 16-18 im Bild unter Punkt 6.
6. Nun wird z.b. ein TextBlock ("textBlock1") - siehe Zeile 35-38 im Bild - hinzugefügt.
7. Die Eigenschaft "Text" des TextBlocks wurde auf die Resource "{Binding Path=LocalizedResources.Greetings, Source={StaticResource LocalizedStringTest}}" gebunden.
Damit ist nun die Resource für die Standard-Sprache festgelegt.
8. Für andere Sprachen kann nun die "Resource1.resx" kopiert werden und je nach Sprache z.b. in "Resource.de-DE.resx" (besser "Resource.de.resx") umbenannt werden.
Die derzeit unterstützte Sprachen sind:
Beispiel - Standardsprache: en-US
<supportedcultures>de-DE;es-ES;fr-FR;it-IT</supportedcultures>
Noch besser, da neutraler - ohne Gebiet:
<supportedcultures>de;es;fr;it</supportedcultures>
Während die App auf dem Windows Phone 7 läuft wird nun automatisch (Spracheinstellung des Telefons) die Sprachresource gewählt und die Texte, Bilder und andere Resourcen entspechend angezeigt.
Übersicht der Resourcenanbindung auf einer Windows Phone 7 Seite (Page)
Die Resourcenanbindung auf einem Control erfolgt ähnlich zur Page. Unterschiedlich ist nur der Verweis auf die Resource. Statt auf eine "phone:PhoneApplicationPage.Resources" wird auf eine "UserControl.Resources" verwiesen.
Übersicht der Resourcenanbindung auf einem Windows Phone 7 Control
1. In Visual Studio fügen Sie eine neue Datei vom Typ "Resource" hinzu, diese benennen Sie je nach Verwendung. In unserem Beispiel bleibt der vorgegebene Name "Resource1.resx". Zu dieser Resource wird automatisch eine Code-Behind-Datei erstellt. Daran erkennt man auch die Default-Resource, bei den anderen Sprachen wird keine Code-Behind-Datei erstellt bzw. benötigt.
2. In VS 2010 unter den Eigenschaften des Projekts bei "Application" - "Assembly Informationen" muß nun die Default-Sprache "Neutral Language" auf z.b. English (United States) besser noch nur "English" eingestellt werden. Besser da, da nur "English" noch neutraler ist.
3. Fügen Sie folgende Klasse "LocalizedStrings.cs" zu Ihrem Projekt hinzu:
Die Bezeichnungen müssen entsprechend dem Resource-Klassen-Namen angepasst werden. In diesem Fall heißt die Resource "Resource1" (siehe 4.).
4. In der Resource-Datei werden nun die Texte als Strings erfasst (Beispiel "Greetings"), desweiteren wird der "Access Modifier" auf Public gesetzt:
Name - der Resource, Zugriffsbezeichner.
Value - der Wert der Resource, in diesem Fall der Text der angezeigt werden soll.
Comment - ein optionaler Kommentar
Hinweis: Es können auch andere Resourcen wie Images, Icons, Audio, Files und Others hinzugefügt werden.
5. Auf der Windows Phone 7 Seite wird ein Verweis auf die zu verwendete Resource hinzugefügt - siehe Zeile 16-18 im Bild unter Punkt 6.
6. Nun wird z.b. ein TextBlock ("textBlock1") - siehe Zeile 35-38 im Bild - hinzugefügt.
7. Die Eigenschaft "Text" des TextBlocks wurde auf die Resource "{Binding Path=LocalizedResources.Greetings, Source={StaticResource LocalizedStringTest}}" gebunden.
Damit ist nun die Resource für die Standard-Sprache festgelegt.
8. Für andere Sprachen kann nun die "Resource1.resx" kopiert werden und je nach Sprache z.b. in "Resource.de-DE.resx" (besser "Resource.de.resx") umbenannt werden.
Die derzeit unterstützte Sprachen sind:
- Englisch:
en English, en-US English (United States), en-GB English (United Kingdom), en-AU English (Australia), en-CA English (Canada), en-NZ English (New Zealand), en-IE English (Ireland), en-ZA English (South Africa), en-JM English (Jamaica), en English (Caribbean), en-BZ English (Belize) - Deutsch:
de German (Standard), de-CH German (Switzerland), de-AT German (Austria), de-LU German (Luxembourg), de-LI German (Liechtenstein) - Italienisch:
it Italian (Standard), it-CH Italian (Switzerland) - Spanisch:
es Spanish (Spain), es-MX Spanish (Mexico), es-GT Spanish (Guatemala), es-CR Spanish (Costa Rica), es-PA Spanish (Panama), es-DO Spanish (Dominican Republic), es-VE Spanish (Venezuela), es-CO Spanish (Colombia), es-PE Spanish (Peru), es-AR Spanish (Argentina), es-EC Spanish (Ecuador), es-CL Spanish (Chile), es-UY Spanish (Uruguay), es-PY Spanish (Paraguay), es-BO Spanish (Bolivia), es-SV Spanish (El Salvador), es-HN Spanish (Honduras), es-NI Spanish (Nicaragua), es-PR Spanish (Puerto Rico) - Französisch:
fr French (Standard), fr-BE French (Belgium), fr-CA French (Canada), fr-CH French (Switzerland), fr-LU French (Luxembourg)
Beispiel - Standardsprache: en-US
<supportedcultures>de-DE;es-ES;fr-FR;it-IT</supportedcultures>
Noch besser, da neutraler - ohne Gebiet:
<supportedcultures>de;es;fr;it</supportedcultures>
Einen Trick das Projekt-File zu edititeren finden Sie unter: Trick um ein Projekt-File zu bearbeiten
9. Nun folgt die Anpassung der Sprache, dabei darf nur der Wert/Value und der Kommentar/Comment verändert werden.
9. Nun folgt die Anpassung der Sprache, dabei darf nur der Wert/Value und der Kommentar/Comment verändert werden.
Hinweis: Der Name ist der Identifier und darf nicht verändert werden.
Übersicht der Resourcenanbindung auf einer Windows Phone 7 Seite (Page)
Resourcen für Lokalisierung in einem Windows Phone 7 Control (Windows Phone Control - xaml)
Die Resourcenanbindung auf einem Control erfolgt ähnlich zur Page. Unterschiedlich ist nur der Verweis auf die Resource. Statt auf eine "phone:PhoneApplicationPage.Resources
Übersicht der Resourcenanbindung auf einem Windows Phone 7 Control
Samstag, 11. September 2010
Wie kann man die Benutzereingaben in einer Webseite sperren?
Problem:
Es soll eine Internetseite im Webbrowser (Internet Explorer) angezeigt werden, die gesperrt ist. Also der Benutzer keine Eingaben machen kann.
Lösung:
In dem die Eigenschaft "IsHitTestVisible" des WebControls auf False gesetzt wird.
Es soll eine Internetseite im Webbrowser (Internet Explorer) angezeigt werden, die gesperrt ist. Also der Benutzer keine Eingaben machen kann.
Lösung:
In dem die Eigenschaft "IsHitTestVisible" des WebControls auf False gesetzt wird.
Freitag, 10. September 2010
Wie lese ich ein Textfile aus den Resourcen?
Using System.IO;
using System.Windows.Resources;
string txt;
Uri uri = new Uri("TextFile.txt", UriKind.RelativeOrAbsolute);
Stream ResourceInfo sri = App.GetResourceStream(uri);
StremReader sr = new StreamReader(sri.Stream);
txt = sr.ReadToEnd();
sr.Close();
using System.Windows.Resources;
string txt;
Uri uri = new Uri("TextFile.txt", UriKind.RelativeOrAbsolute);
Stream ResourceInfo sri = App.GetResourceStream(uri);
StremReader sr = new StreamReader(sri.Stream);
txt = sr.ReadToEnd();
sr.Close();
Wie speichere ich Applikations Daten / Einstellungen
Für eine große Menge an Daten sollten diese in einer XML-Datei im Isolated Storage gespeichert werden. Für Applikations-Einstellungen oder sehr kleinen Datenmengen gibt es noch eine zweite Möglichkeit:
using System.IO.IsolatedStorage;
// Einstellung lesen
if (IsolatedStorageSettings.ApplicationSettings.Contains(name))
ret = IsolatedStorageSettings.ApplicationSettings["Einstellung1"].ToString();
else
ret = string.Empty;
// Einstellung schreiben
if (IsolatedStorageSettings.ApplicationSettings.Contains("Einstellung1"))
IsolatedStorageSettings.ApplicationSettings["Einstellung1"] = value;
else
IsolatedStorageSettings.ApplicationSettings.Add("Einstellung1", value);
using System.IO.IsolatedStorage;
// Einstellung lesen
if (IsolatedStorageSettings.ApplicationSettings.Contains(name))
ret = IsolatedStorageSettings.ApplicationSettings["Einstellung1"].ToString();
else
ret = string.Empty;
// Einstellung schreiben
if (IsolatedStorageSettings.ApplicationSettings.Contains("Einstellung1"))
IsolatedStorageSettings.ApplicationSettings["Einstellung1"] = value;
else
IsolatedStorageSettings.ApplicationSettings.Add("Einstellung1", value);
Wie kann ich Daten an eine andere Seite weitergeben?
Problem:
Es sollen viele Daten an eine andere Seite weitergegeben werden. Die Querystring-Option ist zu umständlich!
Lösung:
NavigationService.Navigate(new Uri("/DetailsPage.xaml", UriKind.Relative));
FrameworkElement root = Application.Current.RootVisual as FrameworkElement;
root.DataContext = _selectedItem;
Es sollen viele Daten an eine andere Seite weitergegeben werden. Die Querystring-Option ist zu umständlich!
Lösung:
NavigationService.Navigate(new Uri("/DetailsPage.xaml", UriKind.Relative));
FrameworkElement root = Application.Current.RootVisual as FrameworkElement;
root.DataContext = _selectedItem;
Wie sortiere ich die Daten einer MVVM List-Applikation?
Problem:
Das verwendete Objekt "ObservableCollection" bietet keine Möglichkeit MVVM-konform die Daten zu sortieren.
Lösung:
Die Daten in ein Property "Source" eines Objektes des Typs "CollectionViewSource" stecken, dieses bietet dann die Möglichkeit zu sortieren, gruppieren und filtern.
Das verwendete Objekt "ObservableCollection
Lösung:
Die Daten in ein Property "Source" eines Objektes des Typs "CollectionViewSource" stecken, dieses bietet dann die Möglichkeit zu sortieren, gruppieren und filtern.
Tastatur funktioniert nicht mehr im Emulator
Problem:
Keyboard.GetState() liefert kein Ergebnis.
Lösung:
Die virtuelle Tastatur mit Pause oder Page Up/Down wieder einschalten.
Keyboard.GetState() liefert kein Ergebnis.
Lösung:
Die virtuelle Tastatur mit Pause oder Page Up/Down wieder einschalten.
Leerzeichen im VS 2010 Projektname
Problem:
Falls im Projektnamen Leerzeichen vorkommen z.b. "Meine App" ersetzt VS z.b. bei <img source="/Meine_App;component/Images/bild1.jpg" x:name="bild1" /> das Leerzeichen in einen Unterstrich.
Lösung:
Den Unterstrich "per Hand" mit einem Leerzeichen ersetzen. Beispiel: <img source="/Meine App;component/Images/bild1.jpg" x:name="bild1" />
Falls im Projektnamen Leerzeichen vorkommen z.b. "Meine App" ersetzt VS z.b. bei <img source="/Meine_App;component/Images/bild1.jpg" x:name="bild1" /> das Leerzeichen in einen Unterstrich.
Lösung:
Den Unterstrich "per Hand" mit einem Leerzeichen ersetzen. Beispiel: <img source="/Meine App;component/Images/bild1.jpg" x:name="bild1" />
Location Service während das Phone gesperrt ist
Während das Phone 7 - Telefon gesperrt ist stehen keine Services zur Verfügung. Die Anwendung wird gestoppt oder sogar beendet.
Abonnieren
Posts (Atom)