请问ItemTemplate定义在资源文件中,如何使ItemTemplate中的UIElement关联事件处理方法?
问题描述:
Test.xaml中有一个ListBox,简单定义如下:
- XML code
<ListBox Name = "listBox" ItemTemplate = "{StaticResource ListBoxItemTemplate}"/>
ListBoxItemTemplate定义如下:(定义在在资源文件中,而没定义在Test.xaml中的ListBox下)
- XML code
<DataTemplate x:Key = "ListBoxItemTemplate"> <StackPanel> <Button Name="myBtn"/> <Text Text = {Binding}/> </StackPanel></DataTemplate>
需求:
需要再ListBox中,点击Button时候能做出相应,但是由于ItemTemplate定义在资源文件中,所以无法为Button的Click关联事件处理方法,请问如何解决?
备注:
如果定义改为:
- XML code
<ListBox Name = "listBox"> <ListBox.ItemTemplate> <DataTemplate x:Name = "ListBoxItemTemplate"> <StackPanel> <Button Name="myBtn" Click="OnClick"/> <Text Text = {Binding}/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate></ListBox>
这样,就可以在Test.xaml.cs中实现Button的事件处理方法,但是这样的话,Test.xaml就很臃肿,而且无法在其他地方重用,请问如何解决? 谢谢
[解决办法]
- XML code
<DataTemplate x:Key = "ListBoxItemTemplate"> <StackPanel> <Button Name="myBtn" Command={Binding yourCommand}/> <Text Text = {Binding}/> </StackPanel></DataTemplate>
[解决办法]
那直接在Click事件中写方法,这样不行吗
[解决办法]
加了个Click就叫臃肿了?而且DataTemplate本身就不为重用打算的,多个ListBox使用同一个DataTemplate那才叫奇怪了呢。