2011-01-19 165 views
2

在这种question我问起加入TabItems动态的TabControlItemsSourceObservableCollection<Village> .. 我的问题是,如果添加一个按钮,任何TabItem是,这个按钮将有其容器TabItemDataContext,我怎么能实现这个按钮的Click事件?WPF按钮单击事件

回答

7

如果您已将Button添加到DataTemplate,那么在您的Button_Click方法上,您可以轻松获得'Village'数据上下文。

void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Village clickedVillage = ((Button)sender).DataContext as Village; 
     //Do whatever you want to do with the Village 
    } 

但同样,上述解决方案不是解决此问题的最佳方法。 MVVM模式期望在你的Village(或者它的容器类)中有一个ICommand,你将把这个命令绑定到Button.Command属性,所以不会有任何代码隐藏。或者换句话说,您的XAML将更加清洁,并且ViewModel将在属性和操作方面获得更多独立。

+0

OOOhhh没错,谢谢工作...... – 2011-01-20 01:39:50