在此question中,我询问了如何动态地将TabItems
添加到TabControl
ItemsSource
来自ObservableCollection<Village>
..
我的问题是,如果向任何TabItem
添加了一个按钮,此按钮将包含其容器DataContext
的{{1}},我该如何为此按钮实现Click事件?
答案 0 :(得分:7)
如果您已将Button添加到DataTemplate,那么在Button_Click方法上,您可以轻松获取'Village'datacontext。
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将在属性和操作方面获得更多自包含。