Blog


Improve productivity by using code snippets

Code snippets are a great way of improving your productivity because they allow you to define pieces of code which you can later on insert into your projects by using a short alias.

Although they’ve been in Visual Studio for quite some time not many people know what they are, what exactly they do and how to use them in their advantage. Hearing about them is one thing, using them it’s another thing. Almost every one of us (those who write code) used them at least once in our lives and the best example I can think of while saying this is: foreach. I mean, how many times have you typed in foreach and then pressed TAB twice for some code to magically appear at your cursor’s location? Yea, that’s a code snippet! And there is a lot more from where that came from. There are code snippets for things like class definition, constructors, destructors, structures, for, do-while, etc. and a complete list (for C#) can be found here: Visual C# Default Code Snippets.

But those are just a small part of what code snippets can offer, those are the default code snippets that come with Visual Studio. The really nice thing about code snippets is that you can define your own and then use them to insert code in your projects wherever and whenever you want.  I will try and create a simple tutorial on how to create your own code snippet sometime next week, until then you can check out this page.

For those of you looking for a couple of general snippets to add to the already existing one, there’s a nice project on codeplex which contains exactly 38 C# code snippets ready to be added to your collection. Adding them to your Visual Studio is easy: just download the zip file from the link mentioned above and extract the file. Then go to Tools -> Code Snippet Manager or press Ctrl + K, Ctrl + B and click on Import. Browse to the folder where you’ve extracted the zip file, select all the code snippets inside the folder and hit Open, then select which folder / category to add them in (My Code Snippets by default) and click finish. And voila! they are ready to be used. To try them out and see if they really work you can try for example typing task or thread somewhere and hitting TAB twice – your code should be automatically inserted.

So, that’s it for now. As I’ve promised, how to create your own code snippets and maybe also something about some snippet designers coming up next week.




31 Days of Windows Phone Metro Design

Those of you wanting to learn more about metro design and how to make your apps look as metro-ish as possible should know that a new series of articles called “31 Days of Windows Phone Metro Design” has just started.

The first article in the series (about the metro design principles) is already up. A link to the post and to all the upcoming ones can be found here.

Articles will pop up once a week, maybe twice so be sure to check them out.




Leveraging Windows Azure for the Windows Phone Developer – Webinar

Just letting you know that there’s an upcoming webinar on the 4th of this month about Windows Azure and how we can benefit from it in Windows Phone. The webinar will be presented by Samidip Basu and has the following agenda:

  • Introduction to Cloud Computing & Windows Azure
  • Push Notifications for Windows Phone
  • Push Notifications from Azure, including deep-linked secondary Live Tiles & Toasts for Windows Phone Mango
  • Why consider OData while leveraging the cloud in cross-platform Mobile solutions
  • Usage of SQL Azure & OData through Windows Phone
  • Usage of Azure-hosted WCF Services for Windows Phone
  • How to use Azure Toolkit for Windows Phone

Date and time: January 4th at 10 AM PDT (check your local time)
Registration link: https://www1.gotomeeting.com/register/386800777

By tweeting about this webinar using the tag #webinarsilverlightshow you get the chance to win the Windows Phone 7 Silverlight Cookbook and at the end of the webinar by giving a constructive feedback you can also get for free the  OData & Cloud Augmentation of Windows Phone Applications ebook.

For more details about the webinar and the free ebooks feel free to visit SilverlightShow.NET




Transparent TextBox for Windows Phone

Below you have a style which applied to your textbox will make it fully transparent. The difference between applying this style and simply setting the Background property of your textbox to transparent or removing it completely is that the style also removes the focus effect the textbox gets when tapped. I mean no matter what background color you set when the textbox gets focused the background turns white.

So here’s the style (you need to add this to your app/page/user control resources):

<ControlTemplate x:Key="PhoneDisabledTextBoxTemplate" TargetType="TextBox">
	<ContentControl x:Name="ContentElement" BorderThickness="0" HorizontalContentAlignment="Stretch" Margin="{StaticResource PhoneTextBoxInnerMargin}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch"/>
</ControlTemplate>
<Style x:Key="TransparentTextBoxStyle" TargetType="TextBox">
	<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
	<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
	<Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
	<Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
	<Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
	<Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}"/>
	<Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}"/>
	<Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
	<Setter Property="Padding" Value="2"/>
	<Setter Property="Template">
		<Setter.Value>
			<ControlTemplate TargetType="TextBox">
				<Grid Background="Transparent">
					<VisualStateManager.VisualStateGroups>
						<VisualStateGroup x:Name="CommonStates">
							<VisualState x:Name="Normal"/>
							<VisualState x:Name="MouseOver"/>
							<VisualState x:Name="Disabled">
								<Storyboard>
									<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBorder">
										<DiscreteObjectKeyFrame KeyTime="0">
											<DiscreteObjectKeyFrame.Value>
												<Visibility>Collapsed</Visibility>
											</DiscreteObjectKeyFrame.Value>
										</DiscreteObjectKeyFrame>
									</ObjectAnimationUsingKeyFrames>
									<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledOrReadonlyBorder">
										<DiscreteObjectKeyFrame KeyTime="0">
											<DiscreteObjectKeyFrame.Value>
												<Visibility>Visible</Visibility>
											</DiscreteObjectKeyFrame.Value>
										</DiscreteObjectKeyFrame>
									</ObjectAnimationUsingKeyFrames>
								</Storyboard>
							</VisualState>
							<VisualState x:Name="ReadOnly">
								<Storyboard>
									<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="EnabledBorder">
										<DiscreteObjectKeyFrame KeyTime="0">
											<DiscreteObjectKeyFrame.Value>
												<Visibility>Collapsed</Visibility>
											</DiscreteObjectKeyFrame.Value>
										</DiscreteObjectKeyFrame>
									</ObjectAnimationUsingKeyFrames>
									<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DisabledOrReadonlyBorder">
										<DiscreteObjectKeyFrame KeyTime="0">
											<DiscreteObjectKeyFrame.Value>
												<Visibility>Visible</Visibility>
											</DiscreteObjectKeyFrame.Value>
										</DiscreteObjectKeyFrame>
									</ObjectAnimationUsingKeyFrames>
									<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="DisabledOrReadonlyContent">
										<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxReadOnlyBrush}"/>
									</ObjectAnimationUsingKeyFrames>
								</Storyboard>
							</VisualState>
						</VisualStateGroup>
						<VisualStateGroup x:Name="FocusStates">
							<VisualState x:Name="Focused"/>
							<VisualState x:Name="Unfocused"/>
						</VisualStateGroup>
						<VisualStateGroup x:Name="ValidationStates">
							<VisualState x:Name="InvalidFocused"/>
							<VisualState x:Name="Valid"/>
							<VisualState x:Name="InvalidUnfocused"/>
						</VisualStateGroup>
					</VisualStateManager.VisualStateGroups>
					<Border x:Name="EnabledBorder" BorderThickness="{TemplateBinding BorderThickness}" Margin="{StaticResource PhoneTouchTargetOverhang}">
						<ContentControl x:Name="ContentElement" BorderThickness="0" HorizontalContentAlignment="Stretch" Margin="{StaticResource PhoneTextBoxInnerMargin}" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch"/>
					</Border>
					<Border x:Name="DisabledOrReadonlyBorder" BorderThickness="{TemplateBinding BorderThickness}" Margin="{StaticResource PhoneTouchTargetOverhang}" Visibility="Collapsed">
						<TextBox x:Name="DisabledOrReadonlyContent" Foreground="{StaticResource PhoneDisabledBrush}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" IsReadOnly="True" SelectionForeground="{TemplateBinding SelectionForeground}" SelectionBackground="{TemplateBinding SelectionBackground}" TextAlignment="{TemplateBinding TextAlignment}" TextWrapping="{TemplateBinding TextWrapping}" Text="{TemplateBinding Text}" Template="{StaticResource PhoneDisabledTextBoxTemplate}"/>
					</Border>
				</Grid>
			</ControlTemplate>
		</Setter.Value>
	</Setter>
</Style>

Now that you’ve got the style, all you need to do is apply it to your textbox like so:

<TextBox Style="{StaticResource TransparentTextBoxStyle}"/>

And that’s all. Your textbox should be 100% transparent now. Also, in case you want to try it out before using it I’ve made a sample project you can download below.

Download Transparent TextBox Sample




Expression Blend 4 has stopped working? Here’s your FIX.

Okay, so this happened to me twice already and in both cases it stopped working after installing the Visual Studio 11 Dev Preview. Having already two PCs on which Expression Blend stopped working I decided to do a little bit of digging and fortunately for me it really took just a bit. The crash is actually a known issue caused by the installation of .NET Framework 4.5 or Visual Studio 11 Dev Preview and the solution for it is rather simple and only takes a couple of minutes.

So what you need to do is open up a command prompt window with administrative privileges and run the commands listed below. Those of you running 32-bit operating systems use %ProgramFiles% instead of %ProgramFiles(x86)%.

C:\> %windir%\Microsoft.NET\Framework\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft Expression\Blend 4\Microsoft.Expression.Framework.dll"

C:\> %windir%\Microsoft.NET\Framework\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft Expression\Blend 4\Microsoft.Expression.Blend.dll"

C:\> %windir%\Microsoft.NET\Framework\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft Expression\Blend 4\Microsoft.Expression.Project.dll"

 

If your Expression Blend has Service Pack 1 you’ll need to run this command a well:

C:\> %windir%\Microsoft.NET\Framework\v4.0.30319\ngen uninstall "%ProgramFiles(x86)%\Microsoft Expression\Blend 4\Microsoft.Expression.WindowsPhone.dll"