2015-01-20 104 views
1

我有列表框ListItemTemplate。有兩個命令我想附加每個列表項。WPF DataTemplate previewmouseleftbuttonup不工作

1)PreviewMouseLeftButtonDown:即使在拖放功能時,我也會使用它。用戶按下按鈕事件被激發,我開始知道用戶選擇了多少項目進行拖動。

2)PreviewMouseLeftButtonUp:我想在用戶從列表項中釋放鼠標時使用它。 (但問題是,這甚至永遠不會被解僱。這似乎是第一個事件同時服用的控制。

這裏是我的代碼。請幫助。

<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

預覽的tunnling部分在列表框中處理之前,它到達listboxitem,爲什麼上一個瀏覽並不經常? – 2015-01-20 19:35:55

回答

0

它看起來就像你正在試圖做的拖將項目放置到原始邊界之外的其他位置,在這種情況下,向上事件將在釋放鼠標時所在的新控件上觸發,而不是您開始拖動的控件。確保在開始拖動操作時捕獲鼠標