Триггер MouseEnter неправильно запускает элементы в ListBox - PullRequest
0 голосов
/ 07 апреля 2011

Я вижу очень странную проблему в окне списка WPF, где триггер MouseEnter для каждого элемента срабатывает менее точно для элементов, расположенных ниже в моем ListBox. Мой триггер MouseEnter запускает анимацию, которая увеличивает ScaleTransform каждого элемента.

Пример: у меня есть список из 10 предметов. В окне списка отображаются первые 5 элементов. Я парю над первым пунктом, и он отлично масштабируется. Я наведите курсор мыши на 2-й элемент, и мне нужно поместить мышь немного дальше в элемент управления элемента списка, чтобы увидеть эффект. Я наведите курсор мыши на третий элемент, и мне нужно поместить мышь еще дальше. К тому времени, когда я доберусь до последнего (5-го) видимого элемента в списке, я должен разместить мышь примерно в средней точке элемента управления для MouseEnter для стрельбы. Затем я прокручиваю вниз, чтобы увидеть пункты 6-10. Пункт № 6 парит просто отлично. № 7 менее точен, № 8 еще менее точен, и так далее до № 10, что очень неточно.

Таким образом, выглядит как вертикальная видимая позиция в списке, влияет на точность MouseEnter каждого элемента управления.

РЕДАКТИРОВАТЬ: Когда я помещаю этот код в чистое окно XAML, он работает нормально. Должен быть какой-то конфликт за пределами предоставленного мною кода ... Я предоставлю более подробную информацию (или ответ), если найду что-нибудь.

Есть идеи о том, что может быть причиной этого?

Вот мой ListBox 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>

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Проблема заключалась в том, что другой элемент управления с большим z-индексом в верхней части списка мешал тестированию попадания элемента списка.У другого элемента управления была предположительно прозрачная область, но по любой причине он мешает мышиному центру.Когда я убираю этот другой элемент управления, проблема исчезает.

0 голосов
/ 07 апреля 2011

Что произойдет, если вы введете ListBox, начиная с пятого элемента? Вам все еще нужно идти на полпути, чтобы увидеть тот же эффект?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...