ListView Hintergrundfarbe des selektierten Elements - Xamarin Forms

Die Hintergrundfarbe der selektierten ListView-Items (SelectedItemBackground) ist vom Betriebssystem vorgegeben. Es gibt keine Property, um das benutzerdefiniert einzustellen.
Workaround: per Renderer die Hintergrundfarbe auf Transparent zu stellen:

für iOS:

using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer (typeof(ViewCell), typeof(MyAPP.iOS.CustomAllViewCellRendereriOS))]
namespace MyAPP.iOS
{
    public class CustomAllViewCellRendereriOS : ViewCellRenderer
    {
        public override U...

Angular HowTos

Routing

<a [routerLink]="['/backkurs']" [queryParams]="{kursid: backtermin.ID}">...</a>

Math-Parser für DotNet

mXparser

mxParser auf GitHub

download

Hier noch ein spezieller, der Intel SSE verwendet

muparserSSE - A Math Expression Compiler

Google Maps für Xamarin Forms

Hier ein sehr ausgebautes Control: GoogleMapsXamarinForms

Dotnet C# HowTos

sortieren einer Generic List

list.Sort( (emp1,emp2)=>emp1.FirstName.CompareTo(emp2.FirstName) );

Konfiguration WebApps (Progressive Web Apps, A2HS add-to-home-screen)

Möchte man seine (Angular-)WebApp auf dem Smartphone im Vollbildmodus laufen lassen, so sind folgende Schritte notwendig:

App-Voraussetzungen

Jede Browser-Engine hat andere Voraussetzungen, die erfüllt werden müssen, damit das "AddToHomeScreen" funktioniert. Hier mal eine Auflistung der wichtigsten Browser:
Google Chrome
Microsoft Edge
[Mozilla Firefox](https://developer.mozi...

MySQL Verbindungsabbrüche

Wenn man immer wieder mal eine Fehlermeldung bekommt "Reading from the stream has failed", dann könnte es auf ein SSL-Problem hinweisen.

Hier mal ein interessanter Artikel dazu:
MySQL Reading failed

Sourcecode-Verwaltung (GIT) und Visual Studio (Code)

Webstorm (Angular)

einfach über VCS -> Import into Version Control -> Share Project on Github.
Dann einen Repository-Namen festlegen. Achtung! Soll es eine private Repository werden, dann erstmal als public unter stephanblaurock anlegen und dann online in eine private Repository umwandeln.

Visual Studio Code (Angular)

  1. Ein leeres Projekt wurde erstellt.
  2. Dann muss zuerst mal eine .gitignore-Datei von einem anderen Angular-Projekt ins Projektverzeichnis kopiert werden.
  3. Danach bitte in der Kommandozeile im Projektverzeichnis `...

Angular Update-Szenarien

Updating Angular und Components

Hier gibt es eine Seite, wo man Source und Destination-Version angeben kann und bekommt eine ToDo-List, was man alles machen muss: Angular-Update-Info

Breaking-Changes

Es gibt folgendes zu beachten beim Umstieg auf Angular 6:
Wenn es folgenden Error gibt:

ERROR in ./node_modules/jszip/lib/readable-stream-browser.js
Module not found: Error: Can't resolve 'stream' in 'c:\Source\TestProject\node_modules\jszip\lib'

dann folgendes in die tsconfig.json einbauen:

{...

Internetverbindung prüfen (Xamarin Forms)

Manchmal muss man prüfen, ob eine Internetverbindung existiert, bevor man versucht, Ressourcen herunterzuladen. Hierfür gibt es ein Plugin (Nutet):

Xam.Plugin.Connectivity

Die Verwendung ist denkbar einfach:

if (CrossConnectivity.Current.IsConnected) {  
    // your logic...  
} else {  
    // write your code if there is no Internet available  
} 

In Android-Projekten muss der App die entsprechenden Zugriffsrechte erteilt werden (ACCESS_NETWORK_STATE und INTERNET):

![i...

MQTT-Implementation unter DotNet

Hier gibt es ein Package für die Implementation von MQTT unter DotNet. Es ist sogar .NET-Standard 2.0 kompatibel:
GitHub

Hier etwas Doku:

Preparation

The following code shows how to create a new MQTT client in the most simple way using the MqttFactory.

// Create a new MQTT client.
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();

Client options

All options for the MQTT client are bundled in one class named MqttClientOptions. It is possible to fill options m...

Verwendung von GitHub unter Visual Studio

Installation

Zuerst muss das Plugin für Visual Studio installiert werden. Hier die Anleitung:

Github-Plugin unter Visual Studio installieren

Verwendung

Beispiel für die Verwendung in Visual Studio:

Github in Visual Studio

Validierung von E-Mail-Adressen

Das geht am besten über diese Komponente.
Installation über nuget:

Install-Package EmailValidation

Codebeispiel:

using System;

using EmailValidation;

namespace Example {
    public class Program
    {
        public static void Main ()
        {
            do {
                Console.Write ("Enter an email address: ");

                var input = Console.ReadLine ();
                if (input == null)
                    break;

                input = input.Trim ();
                Console.WriteLine ("{0} is {1}!", inpu...

Mail-API für DotNet

Vollständige Mail-API zum Senden und Empfangen von E-Mails über SMTP/IMAP/POP3.

Hier ein kleines Beispiel, wie man eine Nachricht versendet:
One of the more common operations that MailKit is meant for is sending email messages.

using System;

using MailKit.Net.Smtp;
using MailKit;
using MimeKit;

namespace TestClient {
	class Program
	{
		public static void Main (string[] args)
		{
			var message = new MimeMessage ();
			message.From.Add (new MailboxAddress ("Joey Tribbiani", "joey@friends.com"));
			message.To.Add (new MailboxAddress ...

SMTP-Server-Komponente für DotNet

Damit lässt sich ganz einfach ein SMTP-Dienst unter DotNet realisieren.

Beispiel:

var options = new SmtpServerOptionsBuilder()
    .ServerName("localhost")
    .Port(25, 587)
    .Build();

var smtpServer = new SmtpServer.SmtpServer(options);
await smtpServer.StartAsync(CancellationToken.None);

Verwendung von Actions (c#)

Im Hauptelement wird die Action wie folgt definiert:

// Deklaration
private Action<EmbeddedUI> _CallbackOnSave;
public void SetCallbackOnSave(Action<EmbeddedUI> callback) {
	_CallbackOnSave = callback;
}

// Aufruf
_CallbackOnSave?.Invoke(this);

Im Element, in dem die Action ausgeführt werden soll

ui.SetCallbackOnSave(action => RefreshNote()); // Action beinhaltet die Instanz von EmbeddedUI
// oder eben auch:
ui.SetCallbackOnSave(RefreshNote);
private void RefreshNote(EmbeddedUI ui) {
   // code
}

Oder direkt als Lambda-B...

MySQL Baumstruktur (Tree) selektieren (SELECT)

Oft möchte man eine Baumstruktur in einer MySQL-Tabelle selektieren.

+--------+-------------------+
| Parent | Child             |
+--------+-------------------+
| 1      | 2,3               |
|  2     | 4,5,6,7,8,9,10,11 |
|   6    | 12,13,14          |
|   8    | 15,16,17,18       |
|    12  | 19                |
|    14  | 20,21,22          |
|     19 | 23                |
+--------+-------------------+
DROP PROCEDURE IF EXISTS objsubtree;
DELIMITER go
CREATE PROCEDURE objsubtree( root char(18) )
BEGIN
  DROP TABLE IF EXIS...

DotNet WebBrowser-Control mit EDGE-Render-Engine

Um die Edge-Rendering-Engine (anstatt IE) im DotNet-Webbrowser-Control zu verwenden muss in der Registry folgender Eintrag gemacht werden:

For 64bit applications, 32bit only Windows or current user:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"Example.exe"=dword:00002ee1 respectively [HKEY_CURRENT_USER\...]

For 32bit applications on 64 bit machines (only machine-wide):

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FE...

Ruby unter Ubuntu installieren (linux)

Für eine reine Ruby-Umgebung müssen folgende Bibliotheken über

sudo apt-get install <bib>

installiert werden.
folgende sind notwendig:
ruby, ruby-dev, make, curl, libgmp3-dev, gcc, g++, zlib1g-dev

Wenn die Ruby-Projekte unter Github.com verwaltet werden sollen, dann bitte noch git installieren

sudo apt-get install git-core