2

我想在 ListBoxItem 上放一个命令。ListBoxItem 使用由 StackPanel(包含 Image 和 TextBlock,均使用 Binding)组成的 DataTemplate。我希望双击该 ListBoxItem 触发命令。

我试过这个:

<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 上,没有任何更改。我确定我的绑定,因为当我将 InputBindings 部分放在 TextBlock 上时,它可以工作。

谢谢

4

2 回答 2

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>

无论如何,谢谢,波林先生。

于 2009-07-09T17:47:48.493 回答
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>
于 2009-07-09T15:21:29.333 回答