Событие MouseUp не всегда срабатывает

У меня есть функция, вызванная событием mouseUp. Все работает нормально, за исключением того, что иногда событие mouseUp не обнаруживается. На самом деле у меня есть просмотр списка с элементами, и когда я выбираю элемент, он запускает функцию. Но не всегда.

<ListView Margin="4" Grid.Row="1" Grid.ColumnSpan="2" x:Name="statinfoListview" 
  ItemsSource="{Binding Path=ExistingStateInfos, ElementName=Window}"
  SelectedItem="{Binding Path=SelectedStateInfo, ElementName=Window}">
    <ListView.ItemTemplate>
        <DataTemplate DataType="{x:Type States:StateInfo}">
            <TextBlock Text="{Binding Path=Name}" MouseUp="ApplyStateInfoNameToState_Click" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

2 ответа

Решение

Возможно, вы вытаскиваете мышь из текстового блока, прежде чем отпустить кнопку? Также обратите внимание, что вы можете не щелкать текстовый блок, если вы находитесь справа от текста, это может помочь добавить HorizontalContentAlignment="Stretch" в ListView.

У вас нет гарантии, что ваш обработчик MouseUp будет вызван, поскольку событие может обрабатываться визуалом-потомком в VisualTree. Вам следует использовать туннельное событие (PreviewMouseUp), если вы хотите быть уверенным, что перехватите событие.

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

Другие вопросы по тегам