是否可以在Silverlight的DataTemplate中绑定事件?如果可以,最好的方法是什么?
例如,假设你已经创建了一个包含按钮的DataTemplate,像这样:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
然后,你可以将其应用于 ListBox 的 ItemTemplate 中,就像这样:
<Grid x:Name="LayoutRoot" Background="White">
<ListBox x:Name="lbListBox" ItemTemplate="{StaticResource MyDataTemplate}" />
</Grid>
如果您将ListBox的ItemSource设置为一个由该类对象组成的列表:public class MyDataClass
{
public string ButtonText{ get; set; }
}
那么如何从列表中的DataTemplate中捕获每个按钮的点击事件呢?您可以使用绑定将Click事件绑定到"MyButtonClass"中的一个方法,像这样:
<UserControl.Resources>
<DataTemplate x:Key="MyDataTemplate" >
<Grid>
<Button Click="{Binding OnItemButtonClick}" Content="{Binding ButtonText}" Margin="4" />
</Grid>
</DataTemplate>
</UserControl.Resources>
这样做可以吗?如果可以,我该在"MyDataClass"中放什么来捕获事件?
谢谢, Jeff