Tengo un ComboBox. Sin cambiar la plantilla, ¿hay alguna forma de que pueda iniciar código cuando el usuario coloca su mouse sobre un ComboBoxItem, pero antes de que la selección realmente ocurra? Parece que debería poder especificar un EventTrigger o un Trigger para hacer esto en el estilo de ComboBoxItem.WPF: Código de inicio cuando IsMouseOver ComboBoxItem
<ComboBox Grid.Column="1" Grid.Row="0"
ItemsSource="{Binding Voices}"
SelectedItem="{Binding SelectedVoice, Mode=TwoWay}">
<ComboBox.Resources>
<Style TargetType="{x:Type ComboBoxItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
... Launch my code from code behind... but HOW? ...
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Resources>
</ComboBox>
también estoy bien con una V IVIENDA MouseEnter, pero yo preferiría no construir un DataTemplate separado o ContentTemplate si es posible.
Actualización. La idea detrás de este fragmento es Reproducir audio de prueba cuando el usuario pasa el mouse sobre una nueva voz, lo que tendría que hacer desde el lado del código. ¡Ayuda!
¿Cómo se maneja el caso de un usuario mueve el ratón sobre los dos primeros puntos, mientras que ir a la tercera? ¿Tocarás los dos primeros sonidos? –
el código real desencadenará un hilo con thread.sleep que espera quizás 100-200 ms para asegurarse de que el usuario todavía está en el mismo elemento, en este caso, comprobará si ismouseover sigue siendo verdadero – tofutim
No es una respuesta a su pregunta, pero dos sugerencias para realizar su idea: para reproducir algo de audio en algún evento, use junto con la clase . Alternativamente, use una clase y maneje los eventos del mouse. –