The complete Silverlight TagCloud series of posts:
- A Silverlight TagCloud, Part 1: The WCF Service
- A Silverlight TagCloud, Part 2: The TagCloud
- A Silverlight TagCloud, Part 2.1: Refinements
- Silverlight TagCloud Now on CodePlex
Maybe this post should be "Part 3", but I think of it as more of an incremental increase over Part 2 of this series, so we'll leave it at 2.1. In any case, this is the third post in a series about a Silverlight TagCloud control I wrote that began with a discussion of the TagCloud's back-end WCF service and then moved on to the front-end Silverlight control. This post extends the Silverlight control, adding some additional features while easing deployment.
Let's get into it.
New Stuff
First, a quick summary of the TagCloud control changes:
1. Removed style information from app.xaml
We don't need it anymore as this information is now passed in as initial parameters.
2. New ItsCodingTime.Utils.Silverlight dll
This utility dll contains the ColorNames class that I previously discussed. I wanted it here to ease distribution and to use in other Silverlight projects. Also, I'll likely write a separate post (and release the full source) about the utils dll when it has some real meat in it.
3. New FontFamily initial parameter
Tag item FontFamily can now be set via a property from ASP.NET.
4. New BackgroundColor initial parameter
The control's Background can now be set via a property from ASP.NET.
5. New TagColor initial parameter
Tag item ForegroundColor can now be set via a property from ASP.NET.
6. New TagHoverColor initial parameter
Tag item MouseOver Foreground color can now be set via a property from ASP.NET.
7. Consolidated the control's ASP.NET and JavaScript code into a user control
The hosting ASP.NET page was getting a little messy what with all of that <object> stuff and JavaScript. While I left the silverlight.js and jquery references, as well as the onSilverlightError function, in my master page, the TagCloud specific code is now in a user control.
FontFamily, BackgroundColor, TagColor, TagHoverColor properties & the SilverlightTagCloud User Control
It's probably best to explain the usage of the new properties and user control with an example. I'll assume you've already installed the TagCloud from my previous post and want to "upgrade".
You'll need to copy over the SilverlightTagCloud.ascx/SilverlightTagCloud.ascx.cs files into your site's "user control" folder (wherever that may be based on your blogging or web site platform) and add the following reference to the page which will house the control:
1: <%@ Register src="~/User controls/SilverlightTagCloud.ascx" TagName="SilverlightTagCloud"
2: TagPrefix="ucSilverlightTagCloud" %>
Once you've got that, you can then replace the entire <object> declaration with (replacing the colors with selections of your own, of course; for possible color names check out my post on WPF Colors in Silverlight):
1: <ucSilverlightTagCloud:SilverlightTagCloud runat="server" TagThreshold="2" FontFamily="Arial"
2: TagColor="#5C80B1" TagHoverColor="DodgerBlue" BackgroundColor="AliceBlue" MinimumFontSize="12" />
Also, there was some initialization code in the code-behind. That can all be removed.
If any of this is hard to follow, check out the sample project in the code download below.
As you can see, the end result of these changes is really focused at being able to customize the appearance of the control via settable properties. Hopefully I've got enough features baked in now, though adding additional properties of your own should be pretty easy.
I won't go over the innards of the user control. It's all the same as what I talked about before (except for the addition of the code to support the above changes), and you can readily check it out in the download. Note that the WCF service code, as before, is in "demo" mode, meaning you can uncomment the BlogEngine.NET specific code if you're using that platform (and include a reference to BlogEngine.NET), otherwise you'll need to plug in your own blogging platform's tag information.
Questions, concerns, or requests for missing or new functionality, let me know.
Download: Silverlight TagCloud control on
CodePlex