Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to bind an Event in a Silverlight DataTemplate?

Tags:

Is it possible to bind an Event in a Silverlight DataTemplate? If so, what is the best way to do it?

For example, say you've created a DataTemplate that has a Button in it, like this:

<UserControl.Resources>
  <DataTemplate x:Key="MyDataTemplate" >
     <Grid>
        <Button Content="{Binding ButtonText}" Margin="4" />
     </Grid>
  </DataTemplate>
</UserControl.Resources>

Then, you apply it to a ListBox ItemTemplate, like this:

<Grid x:Name="LayoutRoot" Background="White">
  <ListBox x:Name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />    
</Grid>

If you set the ListBox's ItemSource to a list of objects of the class:

public class MyDataClass
{
  public string ButtonText{ get; set; }
}

How then do you catch the button click from each button from the DataTemplate in the list? Can you use binding to bind the Click event to a method in "MyButtonClass", like this:

<UserControl.Resources>
  <DataTemplate x:Key="MyDataTemplate" >
     <Grid>
        <Button Click="{Binding OnItemButtonClick}" Content="{Binding ButtonText}" Margin="4" />
     </Grid>
  </DataTemplate>
</UserControl.Resources>

Would this work? If so, what should I put in the "MyDataClass" to catch the event?

Thanks, Jeff