假设我目前有一个 ItemsControl,其 DataTemplate 是一堆按钮。我正在连接这些按钮的点击事件,但我如何知道点击了哪个按钮?我不应该使用 ItemsControl 吗?
我正在尝试没有代码隐藏,但务实可能是必要的。
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Margin="10">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding ItemsControlButtonClicked, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
最佳答案
如果你想知道点击了什么Item
,然后将{Binding }
作为CommandParameter
传递,它将把选择的对象传递给你的命令
如果您想知道单击了什么 Button
,我会在代码隐藏中执行此操作,因为 ViewModel 不需要了解有关 UI 的任何信息,包括按钮。
此外,由于您的控件是 Button,因此您应该使用 Command
属性而不是 Click 触发器。
<Button Command="{Binding ItemsControlButtonClicked}" />
关于c# - 您如何知道 ItemsControl 的哪个元素在 MVVM 中发送事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013183/