DCSIMG
Attaching events to Silverlight's DataTemplate - Ido Flatow's Blog Veni Vidi Scripsi

Ido Flatow's Blog

Veni Vidi Scripsi

News

Have you heard me speak?
Powered
<style type='text/css' media='screen' id='sm_css'> #smix {overflow: visible;height: auto;border-radius: 10px;max-width: 250px;background-color: #323232;text-align: left;font-size: 12px;line-height: 16px;font-family:'Lucida Sans Unicode','Lucida Grande',Verdana,Arial,Helvetica,sans-serif;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;} #smix a {color: #0056CC;text-decoration: none;} #smix .sm_head {color: #fff; line-height: 1em;font-size: 1.4em;padding: 10px;color: #fff;} #smix .sm_lanyard_wrapper {background-color: #fff;;clear: both;width: 97%;margin: 0 auto;margin-bottom: 0px;} #smix .sm_lanyard_content {padding: 7px;}#smix button.sm_rec, #smix a.sm_rec, #smix input[type=submit].sm_rec { padding: 6px 10px; -webkit-border-radius: 2px 2px;-moz-border-radius: 2px; border-radius: 2px; border: solid 1px rgb(153, 153, 153); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(255, 255, 255)), to(rgb(221, 221, 221))); color: #333; text-decoration: none; cursor: pointer; display: inline-block; text-align: center; text-shadow: 0px 1px 1px rgba(255,255,255,1); line-height: 1; }#smix .sm_rec:hover { background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(248, 248, 248)), to(rgb(221, 221, 221))); }#smix .sm_rec:active { background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgb(204, 204, 204)), to(rgb(221, 221, 221))); }#smix .sm_rec.medium { padding: 3px 7px; font-size: 13px; }#smix .sm_rec span.icon.thumbs_up {background-position: 0px 36px;vertical-align: text-top;display: inline-block;margin-right: 4px;height: 18px;width: 16px;background-image: url(http://speakermix.com/images/new/thumbsold.png);}#smix .sm_rec:hover span.icon.thumbs_up {background-position: 0px 18px;} #smix .sm_events {padding:2px 0px 4px 0px;} #smix .sm_section {font-size: 10px; border-bottom: 1px solid silver; margin-bottom: 6px;} #smix .sm_subline {font-size:120%;margin-top:4px;font-weight:bold} #smix .powered {text-align: right} #smix .powered img {margin: 7px} </style>
Sela Technology Center

Advertisement

Attaching events to Silverlight's DataTemplate

If you've used DataTemplates in Silverlight 2, you've noticed that when defining it in a resource of a control, the attached event should be placed in the .cs file containing that control.

If it's a UserControl, it is logical for it to be in the usercontrol's .cs file, usually either coding for that event in the user control itself or exposing the event as an event exposed by the user control.

So far so good, but what happens if we have a general DataTemplate that is used in multiple control / user controls / pages ... ? the obvious answer is place it the app.xaml, but what will happen if we want to catch events from the contained controls in the DataTemplate? putting the event code in the app.xaml.cs is the only way to do it, but it isn't logical to put event code in the app.xaml.cs which will refer to a usercontro/page, isn't it so?

One way we can solve this problem is to define the DataTemplate in a new user control, wrap the event with a new event of the usercontrol's raise that event accordingly.

If you choose to create a UserControl for every DataTemplate or create a “Templates” UserControl for all DataTemplates that have a common usage, it's up to you.

I've attached an example demonstrating this

Comments

Smile said:

It's good to me. Thanks.

# December 8, 2010 10:27 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: