Est-il possible de lier un événement dans un DataTemplate Silverlight? Si oui, quelle est la meilleure façon de le faire?Est-il possible de lier un événement dans un DataTemplate Silverlight?
Par exemple, supposons que vous avez créé un DataTemplate qui a un bouton, comme ceci:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Ensuite, vous appliquez à une ItemTemplate ListBox, comme ceci:
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />
</Grid>
Si vous définissez ItemSource à une liste d'objets de la classe de la zone de liste:
public class MyDataClass
{
public string ButtonText{ get; set; }
}
Comment puis-vous attraper e Le bouton e clique sur chaque bouton du DataTemplate dans la liste? Pouvez-vous utiliser la liaison à lier l'événement Click à une méthode dans « MyButtonClass », comme ceci:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Click="{Binding OnItemButtonClick}" Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Est-ce que ce travail? Si oui, que dois-je mettre dans le "MyDataClass" pour attraper l'événement?
Merci, Jeff
C'est exactement pourquoi les commandes sont meilleures. Dans le framework .NET 4, vous pouvez lier des commandes (contrairement à des événements) de sorte que vous puissiez toujours utiliser MVVM sans afficher de code AND derrière la fonctionnalité de liaison. –