2009-07-09 17 views
2

我想在ListBoxItem上放置一個命令。 ListBoxItem使用由StackPanel(包含Image和TextBlock,均使用Binding)組成的DataTemplate。我希望在該ListBoxItem上雙擊該命令。WPF:StackPanel上的InputBindings

我已經試過這樣:

<DataTemplate> 
    <StackPanel> 
     <StackPanel.Resources> 
      <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" />         
     </StackPanel.Resources> 
     <StackPanel.InputBindings> 
      <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
     </StackPanel.InputBindings> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" IsHitTestVisible="False"/> 
     <TextBlock Text="{Binding Path=Name}" IsHitTestVisible="False"> 
    </StackPanel> 
</DataTemplate> 

我也試圖把司令部資源上包含此StackPanel的一個StackPanel,沒有任何變化。 我確定我的綁定,因爲當我把TextBlock的InputBindings部分,它的作品。

感謝

回答

2

我的代碼最後看起來像這樣:

<DataTemplate> 
    <StackPanel Orientation="Vertical"> 
     <StackPanel.Resources> 
      <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" /> 
     </StackPanel.Resources> 
     <StackPanel.InputBindings> 
      <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
     </StackPanel.InputBindings> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" /> 
     <TextBlock Text="{Binding Path=Name}" /> 
    </StackPanel> 
</DataTemplate> 

還是要謝謝你,波林先生。

1

嘗試在ListBox代替StackPanel處理事件:

<ListBox> 
    <ListBox.Resources> 
    <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" /> 
    </ListBox.Resources> 
    <ListBox.InputBindings> 
    <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
    </ListBox.InputBindings> 
    <DataTemplate> 
    <StackPanel> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" /> 
     <TextBlock Text="{Binding Path=Name}" /> 
    </StackPanel> 
    </DataTemplate> 
</ListBox> 
+0

我已經嘗試過了,但它不起作用:( – Thia 2009-07-09 17:03:38