Must Visit :

C# Programming Guide

http://msdn.microsoft.com/en-us/library/67ef8sbd.aspx


Section 1: Language

C# Keywords  -- You might find some surprises here.

Properties -- Getter / Setter in one place

Delegates -- functions as objects !

Indexers -- Classes can implement object[index] !

Reflection  -- Type is a type. Object implements GetType()

Generics and Reflection -- Yes.

Events -- += EventHandler

Lambda Expressions -- Very useful to keep code concise, readable

Use ‘var’ for implicit typing for simpler code

Variable scope management in code blocks. -- using(var a = constructor){ code block }

How to: Implement and Call a Custom Extension Method 

String.Intern Method : http://www.dotnetperls.com/string-intern

101 LINQ Samples

Dynamic Language Runtime:

Walkthrough: Creating and Using Dynamic Objects

DynamicObject Class

ExpandoObject Class


Section 2: Windows Presentation Framework

WPF Architecture

Andy Van Dam (Brown) WPF slides: 2D, 3D, Viewing

Dependency Properties Overview - Understanding how the framework deals with property changes, change listeners and custom properties.

XAML:

Overview 

Markup Extensions

Type Converters

Custom Prefixes and Custom Types in XAML

Attached Properties and Attached Events

XAML Namespaces and Namespace Mapping for WPF XAML

GUI:

Base Elements Overview

WPF Content Model

VisualTreeHelper

Events

Routed Events Overview

Receiving Input events when the element is transparent:

Normally, the visual hit test ignores the transparent portions of a control. If you want those regions to also receive events, use Fill=”Transparent” in the XAML.

Rendering:

WPF Graphic Rendering Overview

BitmapCache - Creates and caches a bitmap representation of a UIElement.

BitmapCacheBrush - Paints an area with cached content.

Dynamic Layout and Transitions for Microsoft Silverlight 4 with Microsoft Expression Blend

Model-View-ViewModel Design Pattern (MVVM)

Implementing the MVVM Pattern

Advanced MVVM Scenarios

WPF Apps with the MVVM Design Pattern

Property change notification for multithreaded applications


Plugins to be installed with Visual Studio

AnkhSVN

Ctrl+Shift+R (Quick Open) for Visual studio : http://kutny.net/vsopen/

Keyboard Shortcuts: (I don’t recommend rebinding shortcuts, re-learning seems easier)

F12 to navigate to definition

Ctrl - (minus) to go navigate to previous document.

Vertical Text selection ! Alt+Shift+Arrow keys

Visual studio also has the ability to define macros (written in VB *sigh)

WPF Snippets :

http://drwpf.com/blog/2010/04/30/updated-code-snippets/

Very easy to generate boilerplate code around dependency properties and the likes.

Blend + Visual Studio:

I usually try to keep only the xaml open in blend, and the code behind in visual studio. Build on both, run on visual studio.

Use blend if you can use XAML outputs, for animations, storyboards and simple event behaviours. Especially useful for testing transformations and effects.