2012-07-09 584 views
1

我想將命令連線到WPF MVVMLight應用中的Image的MouseDown事件。我有以下代碼:使用MVVM Light綁定WPF圖像控件事件EventToCommand

<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> 

在i粘貼<觸發器>片成其它控制(說,在同一視圖正文塊),確實發生的MouseDown(綁定是正確的)。試圖甚至把它放在邊界內,仍然沒有效果。我想我錯過了一些東西。任何想法是什麼?提前致謝。

+1

請檢查您的輸出窗口的綁定錯誤,可能FindAncestor不起作用..? – SvenG 2012-07-09 12:53:03

+0

不,綁定是正確的,替換圖像與按鈕和一切工作。 – Jaded 2012-07-10 08:50:11

回答

3

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 /視圖模型。

+0

不錯的工具。將嘗試使用它。 – Jaded 2012-07-10 08:50:54