È possibile associare un evento in un DataTamplate Silverlight? Se sì, qual è il modo migliore per farlo?È possibile associare un evento in un DataTamplate Silverlight?
Per esempio, diciamo che hai creato un DataTemplate che ha un pulsante in esso, come questo:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Poi, lo si applica ad un ListBox ItemTemplate, in questo modo:
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />
</Grid>
Se si imposta ItemSource del ListBox a un elenco di oggetti della classe:
public class MyDataClass
{
public string ButtonText{ get; set; }
}
Come allora si cattura ° e fare clic con il pulsante da ciascun pulsante del DataTemplate nell'elenco? È possibile utilizzare vincolante per legare l'evento Click per un metodo in "MyButtonClass", in questo modo:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Click="{Binding OnItemButtonClick}" Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Sarebbe questo lavoro? In tal caso, cosa devo inserire in "MyDataClass" per prendere l'evento?
Grazie, Jeff
Questo è esattamente il motivo per cui i comandi sono migliori. Nel framework .NET 4 è possibile associare i comandi (diversamente dagli eventi) in modo da poter ancora utilizzare MVVM senza alcuna funzionalità code-behind e binding della vista. –