Ist es möglich, ein Ereignis in einem Silverlight DataTemplate zu binden? Wenn ja, was ist der beste Weg, dies zu tun?Ist es möglich, ein Ereignis in einem Silverlight DataTemplate zu binden?
Zum Beispiel, sagen Sie ein Datatemplate erstellt haben, die ein Button in ihm hat, wie folgt aus:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Dann Sie es auf einem ListBox ItemTemplate, wie folgt aus:
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />
</Grid>
Wenn Sie die ItemSource der ListBox auf eine Liste von Objekten der Klasse:
public class MyDataClass
{
public string ButtonText{ get; set; }
}
Wie dann fangen Sie th Klicken Sie auf die Schaltfläche von jeder Schaltfläche aus dem DataTemplate in der Liste? Können Sie verbindlich das Click-Ereignis ein Verfahren in „MyButtonClass“, wie diese zu binden:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Click="{Binding OnItemButtonClick}" Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
Würde das funktionieren? Wenn ja, was sollte ich in die "MyDataClass" setzen, um das Ereignis zu erfassen?
Danke, Jeff
Dies ist genau, warum Befehle besser sind. Im .NET 4-Framework können Sie Befehle binden (im Gegensatz zu Ereignissen), sodass Sie MVVM immer noch ohne Code-Back-Funktion und AND-Bind-Funktionalität verwenden können. –