c# - 您如何知道 ItemsControl 的哪个元素在 MVVM 中发送事件?

标签 c# wpf xaml mvvm

假设我目前有一个 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/

相关文章:

c# - 在 C# 中从服务器向客户端发送一些约束

java - java "unmanaged"代码可以通过 [DllImport] 属性导入到 C# 中吗?

WPF Border IsMouseOver触发器不起作用

c# - 已为应用付费的用户的应用内购买

c# - 链接到本地​​目录中的图像与 URL,我做错了什么?

c# - 创建服务还是后台应用程序?

c# - CloudTable 异步执行查询

c# - 洪水填充算法导致堆栈溢出

c# - 如果在我的 WPF 项目中找不到 xml 文件,如何编写创建新的 xml?

xaml - 找不到关键 TextToBoolConverter 的静态资源