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 に Command Resources を変更せずに配置しようとしました。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 に答える