2011-04-06 46 views
0

我在WPF列表框中看到一個非常奇怪的問題,其中每個項目的MouseEnter觸發器對列表框中的項目進一步下降的準確性會降低。我的MouseEnter觸發器會觸發一個增加每個項目的ScaleTransform的動畫。MouseEnter觸發器在ListBox中的項目上觸發不準確

例如:我有一個10個項目的列表框。列表框顯示前5個項目。我將鼠標懸停在第一個項目上,它可以很好地縮放。我將鼠標懸停在第二項上,並且必須將鼠標放在列表項控件內部才能看到效果。我將鼠標懸停在第三個項目上,並且必須將鼠標放在更遠的位置。當我到達列表中最後一個(第5個)可見項目時,我必須將鼠標放置在控件的中點MouseEnter發射。然後,我向下滾動到底部看項目6-10。物品#6徘徊好。 #7不太準確,#8更不準確,等到#10這是非常不準確的。

因此看起來像垂直可見在列表框中的位置影響每個控件的MouseEnter準確性。

編輯:當我把這個代碼,它工作正常乾淨的XAML窗口。它必須是我提供的代碼之外的一些衝突......如果我找到了某些東西,我會提供更多的細節(或答案)。

關於可能導致此問題的任何想法?

這裏是我的列表框XAML:

<ListBox 
    MaxHeight="530" 
    ItemsSource="{Binding Appointments}" 
    Background="Transparent" 
    > 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <views:AppointmentControl DataContext="{Binding}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

這裏是我的AppointmentControl樣子:

<UserControl Height="155" Width="215"> 
    <UserControl.Triggers> 
     <EventTrigger RoutedEvent="Mouse.MouseEnter"> 
      <BeginStoryboard> 
       <Storyboard TargetProperty="RenderTransform.ScaleX"> 
        <DoubleAnimation To="1.2" Duration="0:0:0.050" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Mouse.MouseLeave"> 
      <BeginStoryboard> 
       <Storyboard TargetProperty="RenderTransform.ScaleX"> 
        <DoubleAnimation To="1.0" Duration="0:0:0.050" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </UserControl.Triggers> 

    <UserControl.RenderTransform> 
     <ScaleTransform ScaleX="1.0" ScaleY="1.0"></ScaleTransform> 
    </UserControl.RenderTransform> 

    <Button 
     Background="#FFCAEE7D" 
     BorderThickness="1,1,1,3" 
     Padding="0" 
     > 
     <StackPanel Height="125" Width="180"> 
      <TextBlock ... /> 
      <TextBlock ... /> 

      <ItemsControl> 
       ... 
      </ItemsControl> 
     </StackPanel> 
    </Button> 
</UserControl> 
+0

因此,如果您有5個可見項目,並且您從底部項目開始並向上移動,會發生什麼? – 2011-04-06 20:51:59

+0

你是什麼意思「從底部項目開始」?首先將鼠標移到底部項目上,然後按照我的方式操作到第一個項目?如果是這樣,那麼我仍然有同樣的問題。 – kindohm 2011-04-06 21:17:41

回答

0

問題是在列表框頂部有一個更大的z-index的另一個控件干擾了列表項目命中測試。另一個對照有一個可以透明的區域,但是無論出於什麼原因,它都會干擾mouseenter。當我刪除這個其他控制時,問題就消失了。

0

如果輸入開始第五元素列表框,會發生什麼?你還需要走到一半才能看到相同的效果嗎?

+0

即使第五個元素是我懸停的第一個項目,我也有問題。 – kindohm 2011-04-06 21:18:56