Jason Cooke works as a software tester for the AppFx group at Microsoft, where he's has been responsible for testing the Calendar and DatePicker controls.
When started learning about the Silverlight SDK Calendar control, I was convinced that it needed to expose a callback mechanism to let users customize the look of the day buttons. The main scenario I had in mind was making holidays look special. Since then, I realized that this is exactly the sort of scenario that Silverlight data binding/value converters were made for. You can see the final result at http://jrcooke.members.winisp.net/share/CustomizedHolidaysDemo/default.html.
Each day button in the calendar has its DataContext set to the date that the button represents. To implement my scenario, I used data binding with a value converter (which holds the "callback" logic) to connect the button's date with the button's background color.
I used Blend to yank almost everything out of the default CalendarDayButton template, to get the simplest XAML that demonstrates the data binding. The part I added was the binding with my custom BackgroundConverter class, which determines how to convert dates to colors. (In a real app, it would be better to simply add the binding to the default template, to take advantage of everything already there.)
<UserControl x:Class="CustomizedHolidays.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ext="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:prim="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls"
xmlns:local="clr-namespace:CustomizedHolidays">
<UserControl.Resources>
<local:BackgroundConverter x:Key="BackgroundConverter" />
<Style x:Key="CalendarDayButtonStyle1" TargetType="prim:CalendarDayButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="prim:CalendarDayButton">
<Grid Background=
"{Binding Converter={StaticResource BackgroundConverter}, Path=Date}">
<ContentControl x:Name="Content" Margin="5,1,5,1"
Content="{TemplateBinding Content}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<ext:Calendar CalendarDayButtonStyle="{StaticResource CalendarDayButtonStyle1}" />
</Grid>
</UserControl>
My BackgroundConverter class implements IValueConverter, the only interface that a converter is required to have. My Convert implementation ignores most of the parameters, using only the value (the date from the data binding source) to determine which color to return. (The ConvertBack method is only used in two-way binding, and not used in this example).
public class BackgroundConverter
: System.Windows.Data.IValueConverter
{
public static IList<DateTime> Holidays { get; set; }
public object Convert( object value,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
DateTime date = (DateTime)value;
if (date.DayOfWeek == DayOfWeek.Sunday ||
(Holidays != null && Holidays.Contains(date)))
return new SolidColorBrush(Colors.Orange);
else
return new SolidColorBrush(Colors.White);
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
When used without initialization, the BackgroundConverter marks every Sundays as a holiday. You can add more holidays by setting the Holidays property, like in the example below where I add the 2009 Federal Holidays.
public Page()
{ BackgroundConverter.Holidays = new DateTime[] { new DateTime(2009, 1,1), // New Year’s Day new DateTime(2009,1, 19), // Birthday of Martin Luther King, Jr. new DateTime(2009,2, 16), // Washington’s Birthday new DateTime(2009,5, 25), // Memorial Day new DateTime(2009,7, 3), // Independence Day new DateTime(2009,9, 7), // Labor Day new DateTime(2009,10, 12), // Columbus Day new DateTime(2009,11, 11), // Veterans Day new DateTime(2009,11, 26), // Thanksgiving Day new DateTime(2009,12, 25 ), // Christmas Day }; InitializeComponent(); } I've deployed an app which uses this code and XAML (based on the full CalendarDayButton template) at http://jrcooke.members.winisp.net/share/CustomizedHolidaysDemo/default.html. I hope you find this code useful, and go on to update it to do more (multiple day types, loading the "special" days dynamically, etc.).
Enjoy your programming,
Jason
(Please note that this code is provided under the Microsoft Public License and is also provided "as is", without warranty of any kind.)
<Editorial Comment>
What a great post. It is always an honor to be able to post for Jason. Hope everyone enjoys this!
- Kathy
</Editorial Comment>
Finally... after months of working out Silverlight 3 Beta 1, it is announced!! Now I can freely blog about the features I work on! :)
So what exactly have I been working on? Since Silverlight 2 ships, I became one of the lead PMs on a new team of Silverlight that will focus on helping developers build great RIA applications end to end. My subteam's focus will be on the UI side and we'll deliver controls and application pieces in the Silverlight 3 Toolkit and the Silverlight 3 SDK.
Some of the features my subteam delivered at MIX are:
- ChildWindow
- DataForm
- DataGrid
- DataPager
- Navigation (Frame, Page, Deeplinking..etc.)
- Validation UI (ErrorSummary)
You can see these controls in action in the Silverlight Toolkit Sample. If you have feedback about any of these controls, feel free to contact me directly or post a comment on the Silverlight Toolkit forum. My team will be monitoring the forum closely.
As excited as I am about the set of features above, this is really only half of the end to end experience my team is responsible for. The other half is the .NET Ria Services, which allows developers to quickly access their data between client and server.
The .NET RIA Services is an framework that provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations
To discuss about ".NET RIA Services", you can post on the forum here. So... what are you waiting for? Go download the ".NET Ria Services" March 2009 preview!
I can't wait to hear what you think about these features!
At the MVP summit on Monday 3/2, ScottGu announced the new "Silverlight" Expertise for the MVP program. I am very excited about having this dedicated expertise for Silverlight. This will allow the Silverlight Product Groups (the runtime teams, VS, and Blend) to interact directly with the MVPs. We are looking forward to your insightful feedback and hope we can continue the excitement Silverlight has generated so far!!
Recruitment
The first order of business for our expertise is recruitment. Not much of an expertise if we don't have anyone :) As of last week, we have 1 MVP in the new Silverlight expertise. Congrats Bill Reiss for being the first Silverlight MVP!
For the rest of you....
If you are already an MVP and your primarily focus is on Silverlight, you are welcome to change your expertise to the "Silverlight track" by working through your MVP lead. (That said, I want to emphasis that all expertise are valuable!) If you need any help, please feel free to let me know.
I know there were some concerns about separating the WPF and Silverlight track and it is hard for some MVPs to choose. Not to worry! The new "Silverlight" expertise will work closely with the Client Application Developer (CAD) track. It is very similar to how the languages (VB, C#..etc.) tracks are closely aligned. For example, in this year's MVP summit, CAD and Silverlight track shared a day of sessions together. So staying in the "CAD" track is equally valuable!
If you are not an MVP, and you'd like to become one. Please review the information on this site.
Activities
When we (Justin, Ted and I) first submitted this expertise to the MVP program, they want us to make sure we are interacting with the MVPs beyond the MVP Summit.
MVPs, What type of engagement would you like to see? Live Meetings?
What does "Bifocals" and "NDAs
" have in common?
My final request to all MVPs, is to follow the advice from the inventor of the bifocal.
When in doubt, don't. - Benjamin Franklin
Sorry for those who has heard me say this many many times already. I know I am being a broken record.
When planning the MVP summit, I pushed very hard for each team and their speakers to have a good percentage of NDA content. (I recommended 25% to 50% of the content needs to be NDA.) I even emphasis that we need to have NDA content for beyond MIX, so that the information gained in the MVP summit can last longer than 2 weeks. :)
Unfortunately, I got a little burned from this. It is really unfortunate how a few bad apples has ruined this for everyone else. I am sad about the lost of trust on the MVP NDA this may create. The Product Group reps are still dealing with the fall out today. Hopefully, we can have this resolved soon.
<Editorial Comment>
Ben Franklin.. This is what happens when you blog while watching the History Channel. What show would you like me to watch next time I blog? Note: It has to be rated PG-13 or below. :P
</Editorial Comment>
Since I can't post much until MIX '09 is here.. I thought I'll do an off topic post. :) I started blogging when I first become a PM back in September 2005. Here are my top 3 posts for the past 4 years:
#3 -With 12,154 views is Watermarked TextBox for Silverlight 2 Beta 2 posted on June 2008
#2 - With 59,720 views is .NET Format String 102: DateTime Format String posted on September 2006
#1 - With 119,575 views is .NET Format String 101 posted on March 2006
So what would you like to see me post in the future? More "101" type posts? More starter guides?
I know many of you are bloggers yourself. What are your top posts?
<Editorial Comment>
I can't wait till MIX is here. I have SOOOOOOOOO much to blog about! I'll be back! (I probably shouldn't blog while watching the Terminator on TV.)
</Editorial Comment>
Jason Cooke works as a software tester for the AppFx group at Microsoft, where he's has been responsible for testing the Calendar and DatePicker controls.
One feature that I wanted in the Calendar control for Silverlight 2 was cool transition effects, where changing the visible days/months/years would kick off some neat animation. That feature did not make it in, but I've been working on a hack that uses the Silverlight templating model to add new functionality. You can view the results at http://jrcooke.members.winisp.net/share/SlidingCalendarDemo/default.htm.
By handling the loaded event in the templates for the CalendarButton and CalendarDayButton, an app can graft an additional helper class (in this case SlidingCalendarHelper) on top of the existing Calendar control and change its behaviors.
To get this functionality in your Silverlight application:
(Please note that this code is provided under the Microsoft Public License and is also provided "as is", without warranty of any kind.)
1. Download the SlidingCalendar project from http://jrcooke.members.winisp.net/share/SlidingCalendar.zip.
2. Add the SlidingCalendar project to your solution.
3. In your page, add an event handler like this:
private void CalendarButtonLoaded(object sender, RoutedEventArgs e)
{
double transitionSeconds = 1.0;
bool spin = true;
SlidingCalendar.SlidingCalendarHelper.AddButton(
(DependencyObject)sender, transitionSeconds, spin);
}
4. Retemplate your CalendarButton and CalendarDayButtons so each of their root Grid controls hook up their Loaded event to the CalendarButtonLoaded handler. (If you are already templating your controls, just add in the event handler code.)
5. Test it out!
Change the values of the local variables the method to change how fast the transition occurs and if the buttons spin.
How it works:
When you call SlidingCalendarHelper's AddButton method, it walks up the visual tree to determine which calendar holds the button. The method sets up dummy versions of each day, month, and year button, and puts them in their own grids, to mimic what the real buttons look like. It also binds to the data context of the real buttons, so that the dummy versions to be updated the real values change.
There are two types of transitions supported:
1. Moving from one mode to another (for example, from the month mode to the year mode),
2. Moving from one range of dates to another within a particular mode.
At the start of both types of transitions, the state of the calendar's previous set of buttons is duplicated in dummy buttons, which are moved into the location previously occupied by the real buttons. The real buttons are moved outside of the calendar in a staging position, and the myDoubleAnimation1 animation is started at 0.
As the animation moves from 0 to 1, the dummy buttons are moved out of the way, while the real buttons are brought into their correct location. When moving from one date range to another, the movement is just sliding the buttons around under the calendar. When changing modes, the buttons expand or shrink.
Known Issues
It probably goes without saying, but this code is provided under the Microsoft Public License and is also provided "as is", without warranty of any kind. In particular, I know of a few issues that, being a tester, it is hard for me to ignore:
1. Ideally, the buttons would be clipped to a region completely within the grid region of the calendar. However, when changing from mode to mode, the buttons move over the Calendar header region.
2. When changing months or modes before the previous transition finishes, the buttons can sometimes get stuck in an intermediate state.
3. The animations eat up a lot of the CPU. It should be more performant.
4. Dummy buttons don't always look right then the buttons are using a custom template. This indicates that the code for creating the dummy buttons is missing something.
I hope that you find this code useful!
Enjoy your programming,
Jason
<Editorial Comment>
It's been crazy the past few months leading up to MIX. I'll have a lot of great stuff to post soon ^_~ . In the mean time, I hope you all enjoyed Jason's post. Thank you Jason!
</Editorial Comment>
Many of you have been asking us where you can get the source and unit test of all the Silverlight 2 controls. It is now available on Microsoft Download. Enjoy!
http://www.microsoft.com/downloads/details.aspx?FamilyID=EB83ED4C-AC85-4DE9-8395-285628EE2254&displaylang=en
In my last post, I said I have been working on a demo project that I had to wait to till PubCon's announcement of Live Search 2.0 API!
So without further ado... here is a preview of Silverlight Movies. This is a movie showtime search driven by Windows Live Search 2.0 API.
The search that drives the initiation of the ComboBox is just searching for "showtimes". Live Search will automatically detect your location and return a set of movies. (Unfortunately, the initially list return is sometimes a weird list of movies results, but if you put in your zip code and click the search button before you select any movies, (I made a bug fix to update the zip code whenever we loose focus in the textbox) it'll repopulate the movie list... otherwise if the movie is not playing in your area, you might get an invalid zipcode error. I probably need to design a better interaction. :))
I started doing this application because I wanted to do something with the controls set that is a little more exciting than my Silverlight 2 Control demo. In my project, I have used the following:
- DataGrid
- ComboBox
- TabControl (Can you see which one is a TabControl?)
- UserControl
- Button
- TextBlock
I have plans to further re-template the other controls, but I thought I'll share this app anyway. The app uses LiveSearch to get the movie showtimes data which I databind to the ComboBox and DataGrid. LiveSearch is really cool, it automatically picks up your zipcode so you don't even have to input it. After I populate the list of movies, I use LiveSearch to search for movie poster. (Unfortunately, I think that doesn't work as well...).
Another thing that I find pretty cool is that I was able to do all the templating myself in Blend. I thought I did a pretty good job for a developer with minimal aesthetics skills. :) Go Blend team!
So to write your own Silverlight + Live application, here are a few useful links:
P.S. Sorry to disappoint everyone who thought this would be a Toolkit demo.
Sorry it took me a little longer to post everything, but here is my deck and my demo. 
Please note that the demo is provided under the Microsoft Public License, and I provide it "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
If you run into any questions or feedback, feel free to drop me a note here on this blog.
Thank you for coming! It was really great meeting everyone!
Thank you to all who attended my session. As promised, here is my deck and my demo. You can also view the demo directly here.
Please note that the demo is provided under the Microsoft Public License, and I provide it "as is" without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
If you run into any questions or feedback, feel free to drop me a note here on this blog.
Hopefully, I'll see you all at WUX 203: Introduction to the Silverlight Controls Framework tomorrow at 1pm in Room 114.
Also, if you enjoyed the content, then please fill out the evals!
I've never been to Barcelona, actually, I have never been to Spain! So I'm really looking forward to this trip. In addition to Spain, I'm also spending 2 days in Istanbul for an event with a set of Finance Architects. I'm looking forward to seeing everyone in Spain!
Here are the sessions I'll be giving:
WUX202 Building Rich Internet Applications Using Microsoft Silverlight 2 November 11 09:00 - 10:15
Silverlight provides a powerful platform for building the next generation of rich interactive applications on the Internet. In this session, we take a deep look at the programming model and tools that developers and designers can leverage to build these true next-generation experiences for consumers and businesses, and demonstrate building a Rich Interactive Application (RIA) using Silverlight and Microsoft .NET. We cover how to use Microsoft Visual Studio to create applications, how to create UI using XAML markup and code, how to build a custom control, how to retrieve data from a Web service and how to manipulate data with XML and LINQ. We also discuss Silverlight roadmap and positioning.
WUX203 An Introduction to Microsoft Silverlight Controls Framework November 12 13:30 - 14:45
This session provides an overview of the Silverlight controls and controls model. We look at the fundamentals of how to use Silverlight controls and how to make minor visual customizations to them via Styles. In addition, we explore UserControls and how they make building Silverlight applications easier and how to completely re-template controls.
If you will be at TechEd EMEA and what to chat with me, I'll also be working the Silverlight booth right after my sessions! Hola Barcelona!
Yes, I know. I'm a little late to the party. This past few weeks has been crazy, with Silverlight 2 RTW, PDC coming up and I'm going to TechEd EMEA, my blogging has fallen behind. :( But even tho I'm a week behind, I'd like to use this time to thank everyone I've worked with on this awesome product. There was a lot of people involved in shipping this and the process has been stressful, difficult but most of all... FUN!
Anyway, my controls demo has been updated to Silverlight 2 RTW! :) I have actually been working on a separate demo. That needs a little more polishing up first but I'll post it soon enough.

Silverlight Controls Demo
Uploaded on October 23
Created by: Kathy Kam
A sample of twenty-four Silverlight 2 controls that can be viewed live together with the source code used to drive the controls.
By clicking Download It you accept the license

Tim Heuer has also updated the WatermarkTextBox code for RTW. Thanks Tim!
Now it's on to Silverlight 2+ and beyond~~~!!!
This past week, I flew back to Ann Arbor, MI to participate in recruiting event at University of Michigan, my alma mater. It's been a lot of fun meeting the students and chatting about what it's like being a PM in Microsoft. I hope I gave everyone there a good idea about the fun and impact you can have with a career in Microsoft.
However, my favourite event of the week has to be TechFest which was held at the Michigan League. This was a chance for Microsoft UMich Alumni to showcase their products. It was pretty cool to see how many Microsoft products was being demoed! (I think we had the largest room at the league.) We had everything from Office to Zune. Every presenter was a Michigan Alumni and as you walk around the room to watch their demo, you can feel the passion each of us have for our products.
Can you guess what I demoed? Of course it's Silverlight! I have probably done this demo a dozen times at various conferences, but I still love seeing the "this is so awesome" look on everyone's face when I showcased the various Silverlight applications.
Here is a list of Silverlight 2 sites I demoed:
Hardrock Memorabilia: http://memorabilia.hardrock.com/
Home Shopping Network: http://www.hsn.tv/
Halo3 Game Guide: http://www.microsoft.com/silverlight/halo3.aspx
Fox Trailers: http://www.silverlight.net/fox/
NBC Olympics (Select "Enlarge Player"): http://www.nbcolympics.com/video/player.html?assetid=0824_hd_mul_au_ce529
Silverlight website (to download the SDK and build your own awesome websites!) : http://silverlight.net
I encourage everyone to visit these sites and play around with it. There is so much more to each of these applications than I had time to demo. :)
If anyone has any questions about being a PM in Microsoft, what's it like moving from Michigan to Seattle, or anything about Silverlight... feel free to contact me via this blog! Go Blue!
<Editorial Note>
I am delighted to have Jason to write this awesome blog showing everyone how to retemplate the Calendar using Silverlight Beta 2. Let us know what you think!
</Editorial Note>
My name is Jason Cooke. I work as tester for Silverlight's Calendar and DatePicker controls. Kathy has asked me to write some more details about a workaround I found for a Calendar templating issue. Corina Barber’s wonderful Beta 2 templates use an earlier version of this workaround.
First, a little history. In Silverlight 2 Beta 1, you could template the appearance of the days and months in the Calendar control by setting the DayStyle and MonthStyle properties. You would only get one chance to set the template, because the styles can only be set once in Silverlight.
For Silverlight 2 Beta 2, we wanted to make the templating more flexible, so we removed those properties. However, we forgot to add the new way for setting the templates. Using XAML alone, it is not possible to template the Calendar's days and months. (We intend to fix this in the final version of Silverlight 2.) For example, Corina’s Red template would look like this, using the default day button styles:

One way you can work around this limitation is by changing the Calendar's template to use a custom grid for holding the days. This custom grid lets the Calendar set the days using the default template, but then re-templates the days using the template you specify. (This approach has some performance issues, and might not behave as expected in all circumstances.) With the workaround, her calendar looks like this:

The following instructions assume that you already have set up a custom template for the Calendar, based on the ones from MSDN. For more information about this, see the MSDN reference at Calendar Styles and Templates or Corrina's blog at ux musings.
1. In your Silverlight project, add a new class file named GridHook.cs, which defines a derived grid control named GridHook:
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
[TemplatePart(Name = GridHook.ElementButtonTemplate,
Type = typeof(ControlTemplate))]
public class GridHook : Grid
{
private const string ElementButtonTemplate =
"ButtonTemplate";
private ControlTemplate _buttonTemplate;
public GridHook() : base()
{
// Use LayoutUpdated event to hook into Calendar
this.LayoutUpdated += this_LayoutUpdated;
}
void this_LayoutUpdated(object sender, EventArgs e)
{
// Load in the ButtonTemplate.
_buttonTemplate =
this.Resources[ElementButtonTemplate]
as ControlTemplate;
// Look in the parent chain for the Calendar.
FrameworkElement par = this.Parent
as FrameworkElement;
while (par != null)
{
Calendar cal = par as Calendar;
if (cal != null)
{
// Check the button templates when
// the layout updates.
cal.LayoutUpdated += cal_LayoutUpdated;
// Don't care about grid's layout.
this.LayoutUpdated -= this_LayoutUpdated;
// Check the button templates now.
RefreshButtonTemplates();
break;
}
par = par.Parent as FrameworkElement;
}
}
void cal_LayoutUpdated(object sender, EventArgs e)
{
RefreshButtonTemplates();
}
void RefreshButtonTemplates()
{
foreach (Control cb in
this.Children.OfType<Control>())
{
// Only update if needed
if (cb.Template != _buttonTemplate)
cb.Template = _buttonTemplate;
}
}
}
2. In the Calendar template, replace the Grid named MonthView:
<Grid x:Name="MonthView" Grid.Row="1" Grid.ColumnSpan="3"
Visibility="Collapsed" Margin="10,12,10,7"
RenderTransformOrigin="0.5,0.5">
with this definition that uses GridHook and a resource section that defines the ButtonTemplate, using the template for the DayButton.
<local:GridHook x:Name="MonthView" Grid.Row="1" Grid.ColumnSpan="3"
Visibility="Collapsed" Margin="10,12,10,7"
RenderTransformOrigin="0.5,0.5">
<Grid.Resources>
<ControlTemplate x:Key="ButtonTemplate" >
<!--Day Button template ... too long to list here-->
</ControlTemplate>
</Grid.Resources>
3. Customize the DayButton template.
4. You can do the same thing with the YearView grid, starting with the template for the CalendarButton.
And, just to be clear, this is a temporary workaround for Silverlight 2 Beta 2. We are working on ways to make templating even easier for the final version of Silverlight 2.
Enjoy your programming,
Jason
There has been quite a few write ups on TechEd North America and I have yet to see a photoblog of it. Since PhotoBlogs are quite a hit lately, I decided to do my first photoblog on TechEd! If you didn't make it to TechEd, hopefully this will give you a flavor of what's its like! Here is my photoblog of my day at Microsoft TechEd and what I see as I walk to do my booth duty.
 |
 |
| 1) The chartered bus that takes me from my hotel to the Orange County Convention Center where TechEd is held. This bus was the beginning and the end of my daily journey to TechEd.h |
2) My fellow bus rider as we walk to the entrance. I actually met a lot of people and networked on the bus. I met the marketing team of Infragistics on the bus ride the next day! |
 |
|
| 3) This is the entrance of TechEd. |
4) We even have a shoeshine guy at the front in case your shoes got dirty from the walk between the bus and the front door. Talk about service! |
|
|
| 5) Before you can go anywhere, you have to pass the security guards. She was nice enough to let me take a photograph of her for this blog. :) |
6) Ta-da... you are now inside! The green structure in front is registration. It might look empty now, but on Tuesday morning, they have processed over a thousand people within an hour. |
 |
|
| 7) This is the TechEd store. For all your emergency speaker shirt needs. :) |
8) The "TLC" area (where the booths are) is opposite the Hands on Lab area. So I walk by these rows and rows of computer as far as the eye can see every day. |
|
|
| 9) My station, the ASP.NET booth. Here is Scott Hunter (left) and Clay Compton (center) with one of our customers. |
10) John Dundon (left) was also at the ASP.NET booth to represent web tools. |
 |
 |
| 11) My other station, the Silverlight booth. Here is Matt Powell and Seema Ramchandani. |
12) Before I do my booth duty, I need to sign off with these lovely ladies. |
|
|
| 13) After a couple hours of booth duty, Seema, Beatrix and I head off to lunch. Can you see the rows & rows of tables behind us? Oh...btw.. who said there are no females in computing? |
14) Delicious lunch is provided |
|
|
| 15) We found ourselves a table with other customers. |
16) After lunch I headed back to the booth area and noticed a huge crowd. Standing in the middle is a guy giving away T-shirts. |
|
|
| 17) What is a conference without some mascot? Here is the Microsoft Virtual Labs guy (left), the Windows Server 2008 man (center), and Visual Studio 2008 punk (right)? (Does anyone actually know the names of these mascots?) |
18) After a long day of work, Krzysztof Cwalina, Pat Helland and I hung out at Disney Downtown for dinner. |
I'm going to end this Photoblog with the most awesome ad. :) This was at the Orlando Airport (MCO).
<Editorial Notes>
Did you like the photoblog? I have never done one before. Hopes this give you a flavor of what's its like at TechEd.
</Editorial Notes>
One breaking change you may have noticed between Silverlight 2 Beta 1 and Beta 2 is that WatermarkedTextBox is no longer available in the Silverlight SDK (System.Windows.Controls.Extended.dll).
We decided to remove the control because in a future version of Silverlight, we will be adding a “Watermark” property to TextBox. Given this upcoming change, it does not make sense to have "WatermarkedTextBox" as a separate control, so we decided to remove the control from Silverlight 2.
Because the update to TextBox will not happen until a future version of Silverlight feel free download and use the WatermarkedTextBox source code and unit test in the mean time. By downloading the source and unit tests you accept the license.
Here is an example on how to use it:
For more information on how to use this control, check out our Beta1 documentation in MSDN:
http://msdn.microsoft.com/en-us/library/system.windows.controls.watermarkedtextbox(VS.95).aspx
In additional to porting the source code & unit test for Beta 1, we also did the following:
- Updated the template to use new features in the framework (i.e. VisualStateManager)
- Bug fixing: When the control has focus, MouseOver state will no longer be active after moving the mouse away from the cotnrol
- Bug fixing: Allow setting BorderBrush correctly
If you run into any problems, let me know! :)
<Editorial Note>
This is also a great example on how to use the new Visual State Manager for Silverlight 2 Beta 2!
Also a special "Thank you" to the WatermarkedTextBox dev Alex Bulankou for porting the source code, updating & fixing the bugs.
</Editorial Note>