2015-01-20 3 views
1

У меня есть Listbox с ListItemTemplate. Есть две команды, которые я хочу прикрепить к каждому элементу списка.WPF DataTemplate previewmouseleftbuttonup не работает

1) PreviewMouseLeftButtonDown: Я использую это, даже если для функции перетаскивания. пользовательское нажатие кнопки запускается, и я узнал, сколько элементов пользователь выбрал для перетаскивания.

2) PreviewMouseLeftButtonUp: Я хочу использовать это, когда пользователь освобождает мышь от элемента списка. (Но вопрос этот даже не увольняют. Похоже, что 1-го события взяв под контроль обоих.

Вот мой код. Pls помочь.

<DataTemplate x:Key="ListItemTemplate"> 
    <Grid Margin="0" Width="58" Height="58" x:Name="OuterGrid">   
     <Border x:Name="OuterBorder" BorderBrush="{DynamicResource ContentToGreyedOutBrush}" BorderThickness="0" Margin="0" Background="Transparent" Grid.Column="0" Grid.Row="0" 
             ClipToBounds="True" CornerRadius="0"> 
      <Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="1" Margin="0" Background="Transparent" CornerRadius="0"> 
       <Grid> 
        <Image Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Center" Source="{Binding Path=FileName,Converter={StaticResource FileNameImageConverter}}" 
            Width="50" Height="50"> 
        </Image> 
        <ToggleButton x:Name="zoomButton" Grid.Column="0" Grid.Row="0" Margin="0" HorizontalAlignment="Right" HorizontalContentAlignment="Right" VerticalAlignment="Bottom" 
          VerticalContentAlignment="Bottom" Background="Transparent" Cursor="Hand" Template="{StaticResource ZoomTemplate}" Width="20" Height="20" Visibility="Collapsed"> 
        </ToggleButton> 
       </Grid> 
      </Border> 
     </Border> 
     <ac:CommandBehaviorCollection.Behaviors> 
      <ac:BehaviorBinding Event="PreviewMouseLeftButtonDown" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}},Path=DataContext.DragItemSelectedCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"/> 

    <ac:BehaviorBinding Event="PreviewMouseLeftButtonUp" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}},Path=DataContext.MouseUPCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"/> 
     </ac:CommandBehaviorCollection.Behaviors> 
</Grid> 
</DataTemplate> 
+1

Часть туннелирования предварительного просмотра обрабатывается в списке до того, как она дойдет до списка. Почему? iew и не регулярно? –

ответ

0

Похоже, что вы пытаетесь сделать перетаскивание элемент в другое место за пределами исходных границ. В этом случае событие up будет запускаться на новом элементе управления, над которым находится мышь, когда он выпущен, а не на том элементе управления, который вы начали перетаскивать. Для выполнения этой работы вам нужно убедитесь, что захватили мышь при запуске операции перетаскивания.