1

我想在 WPF MVVMLight 应用程序中将命令连接到 Image 的 MouseDown 事件。我有以下代码:

<Border Grid.Row="2" Grid.Column="1" BorderThickness="1" BorderBrush="Black">
                <Image Margin="3" Name="Content" Source="{Binding Content}" HorizontalAlignment="Left">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="MouseDown">
                            <cmd:EventToCommand 
                                Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.SelectMediaCommand}" 
                                CommandParameter="{Binding}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>    
                </Image>
            </Border>

当我将 < Triggers > 粘贴到其他控件中(例如同一视图中的文本块)时,MouseDown 确实会发生(绑定是正确的)。试过把它放在Border里面,还是没有效果。我想我错过了一些东西。有什么想法吗?提前致谢。

4

1 回答 1

4

interaction.triggers 部分是正确的。所以错误只是在您的命令绑定中。像 SvenG 建议检查您的 vs 输出窗口或使用Snoop查找绑定错误。

我的工作示例:

    <Image Source="arrange.png" Grid.Row="1">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseDown">
                <cmd:EventToCommand 
                            Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.OpenCommand}" 
                            CommandParameter="{Binding}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Image>

这意味着您的用户控件需要具有 ICommand 属性 OpenCommand 的数据上下文/视图模型。

于 2012-07-09T13:01:42.960 回答