wpf按钮单击事件

Sam*_*med 2 wpf datacontext observablecollection

在这个问题我问了一下添加TabItems动态到TabControlItemsSource来自ObservableCollection<Village>..我的问题是,如果添加一个按钮,任何TabItem,此按钮将有DataContext其容器的TabItem,我怎么能实现此按钮的Click事件?

Job*_*Joy 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
    }
Run Code Online (Sandbox Code Playgroud)

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