1

WPFMVVMLightアプリケーションで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が発生します(バインディングは正しいです)。ボーダーの中に入れても効果はありません。私は何かが欠けていると思います。何かアイデアはありますか?前もって感謝します。

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を持つdatacontext/viewmodelが必要であることを意味します。

于 2012-07-09T13:01:42.960 に答える