MohamedG's Log


Adding HTTP Headers to WCF Calls

To add HTTP headers, request messages have to be intercepted before they are sent to the server. This can be done by implementing the IClientMessageInspector.BeforeSendRequestmethod: /// <summary> /// Represents a message inspector object that can be added to the <c>MessageInspectors</c> collection to view or modify messages. /// </summary> public class ClientMessageInspector : IClientMessageInspector { ///… Read more

Extending XElement to Match Child Elements by LocalName

If you want to ignore the child elements’ namespaces, and match by local name only, you can do something similar to the following: /// <summary> /// Represents an extension for <see cref="XElement"/>. /// </summary> internal static class XElementExtension { /// <summary> /// Gets the first (in document order) child element with the specified <paramref name="localName"/>…. Read more

Reflector Visual Studio Extension – Enable Debugging

I’ve been using the standalone Reflector.exe for so many years now, and recently I’ve been using JustDecompile too. They have different accuracy levels and different set of distinguishing features, but the one I use in VS is Reflector. I was excited about a feature in the Visual Studio extension, I had to blog about it!… Read more

Adding Custom SOAP Headers in WCF

First, you need to decide whether to create the custom header using the MessageHeader.CreateHeader method, or by extending the abstract MessageHeader class. Under the hood, the CreateHeader method returns an instance of an internal class called XmlObjectSerializerHeader, which uses a serializer to write the header: protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) { Type type;… Read more

Overriding an Abstract Property vs. Passing a Parameter

An abstract class may require a value to be passed through the constructor like the following example: public abstract class Node { private readonly Uri _uri; protected Node(string address, string relativePath) { _uri = new Uri(Path.Combine(address, relativePath)); } } public class Element : Node { private const string relativePath = "/path"; public Element(string address) :… Read more

Changing the Foreground Color of an Indeterminate ProgressBar

You would think that the following XAML changes the indeterminate progress bar’s foreground color: <ProgressBar IsIndeterminate="True" Foreground="Aquamarine" /> Unfortunately, that doesn’t work. You will need to override the following value in the default theme resource dictionary: <ResourceDictionary.ThemeDictionaries> <ResourceDictionary x:Key="Default"> <x:String x:Key="ProgressBarIndeterminateForegroundThemeBrush">Aquamarine</x:String> </ResourceDictionary> </ResourceDictionary.ThemeDictionaries> You can add that override to App.xaml, or to a new resource… Read more

Making HTML Elements Scrollable

I’ve been styling my blog recently to make it more Win8-like (thank you for noticing!). I created some custom CSS file, but I ran into a problem with code. I use wide screens at work and at home, so I tend to break the guidelines and write more than 120 characters in a line of… Read more

Windows Store App Settings Flyout

Prerequisites Please read the following articles first: Guidelines for app settings (Windows Store apps) Quickstart: Adding app settings using Windows Runtime In this post, I’ll be walking through how to create a custom UI for settings (required for C#, C++, and VB) that satisfies the UX design requirements. UI & UX The settings window may… Read more

Margin in XAML vs. CSS

According to W3C: “The ‘margin’ property is a shorthand property for setting ‘margin-top’, ‘margin-right’, ‘margin-bottom’, and ‘margin-left’ at the same place in the style sheet” respectively. Here’s the example W3C used to illustrate the order of properties in the shorthand: margin: 10px 20px 30px 40px; Top padding is 10px, right padding is 20px, bottom padding… Read more