Monthly Archives: Dezember 2012

Linq Distinct Nutzung bei Custom Objects

Wollte gerade eine Liste via Linq filtern, so dass jedes Objekt nur noch einmal drin vorkommt. Theoretisch klappt das so:

var result = this.PersonList.Distinct().ToList<person>();

Problem ist, dass ich das ganze auf eine Liste anwende, welche Custom Objects enthält. Hier muss dann noch ein wenig Vorarbeit geleistet werden.
Und zwar muss das IEquatable Interface und die zwei Methoden Equals/GetHashCode implementiert werden. Danach sieht die Klasse wie folgt aus:

public class person : IEquatable<person>
{
	public int ID { get; set; }
	public string Name { get; set; }

	public bool Equals(person obj)
	{
		if (this.Name == obj.Name && this.ID == obj.ID)
			return true;

		return false;
	}

	public override int GetHashCode()
	{
		int HashPersonName = this.Name == null ? 0 : this.Name.GetHashCode();
		int HashPersonID = this.ID == null ? 0 : this.ID.GetHashCode();
		return HashPersonName ^ HashPersonID;
	}
}

Und schon funktioniert Distinct() auch wie oben beschrieben.

Achtung: Es wird nicht die Methode Equals überschrieben, sondern eine eigene erstellt!

Leave a Comment

Filed under C#

Maximal Größe von Controls in Windows Phone

Wie ich gerade feststellen musste, gibt es bei Windows Phone eine Maximalgröße für Controls welche bei 2048px (bzw. Width/Height) liegt. In meinem Fall ging es um einen sehr sehr langen Text welchen ich in einem TextBlock darstellen wollte. Die Lösung hierfür war ein Custom Control welches einfach mehrere TextBlock’s in einem Stackpanel unterbringt. Wie das Ganze funktioniert ist hier in einem MSDN Blog Artikel von Alex Yakhnin erklärt. Solltet ihr die Control tatsächlich verwenden wollen, nutzt am besten den Quellcode welchen im Beitrag ganz unten angehängt ist. Der Quellcode, welcher im Beitrag selbst gezeigt wird, ist nicht vollständig!

Quellcode

Leave a Comment

Filed under C#, Windows Phone

Bestimmen ob WLAN aktuelle Internet Netzwerk Schnittstelle in Windows Phone 7/8 ist

Neulich musst ich feststellen, dass Windows Phone automatisch auf eine Handy Netz Connection umswitcht wenn über das WLAN kein Internet zubekommen ist. Das ist sehr unpraktisch, insbesondere wenn man als App Entwickler sicherstellen möchte das der Traffic nur über das WLAN fließt. Früher habe ich mit den folgenden Zeilen einfach abgeprüft ob das WLAN aktiviert wurde:

using Microsoft.Phone.Net.NetworkInformation;
if(DeviceNetworkInformation.IsWiFiEnabled == true)
{
// Add code
}

Besser ist allerdings:

using Microsoft.Phone.Net.NetworkInformation;
if (NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
{
// Add code
}

Der Unterschied ist durchaus nicht zu vernachlässigen. Die 1. Methode testet schlicht ob WLAN überhaupt aktiviert ist. Die 2. Methode hingegen testet ob aktuell alle Daten welche ins Internet wollen über das WLAN fließen und dies auch funktioniert.

Leave a Comment

Filed under C#, Windows Phone