wpf按钮单击事件

时间:2011-01-19 23:14:27

标签: wpf datacontext observablecollection

在此question中,我询问了如何动态地将TabItems添加到TabControl ItemsSource来自ObservableCollection<Village> .. 我的问题是,如果向任何TabItem添加了一个按钮,此按钮将包含其容器DataContext的{​​{1}},我该如何为此按钮实现Click事件?

1 个答案:

答案 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将在属性和操作方面获得更多自包含。