Sto lavorando a un'applicazione WPF in cui ho un evento di doppio clic a livello di finestra che massimizza la finestra dell'app quando un utente raddoppia clicca ovunque all'interno della finestra. Tuttavia, ho anche un controllo personalizzato all'interno della finestra dell'app e un evento doppio clic separato all'interno del controllo personalizzato. Quando un utente fa doppio clic nel controllo personalizzato, solo l'evento del doppio clic del controllo deve essere attivato e la finestra non deve ridimensionare. Il mio codice simile a questa:L'evento doppio fa scattare a livello di finestra e livello di controllo, anche quando viene gestito all'interno del controllo
public class Window
{
private void window_DoubleClick(object sender, EventArgs e)
{
/// Maximize/minimize window
}
private void myCustomControl_DoubleClick(object sender, EventArgs e)
{
/// Do other things, but PLEASE don't resize!
e.Handled = true;
}
}
E il mio XAML simile a questa:
<Window x:class="MyProject.MyWindow"
MouseDoubleClick="window_DoubleClick">
<Grid Grid.Row="0" Margin="0">
<local:myCustomControl
MouseDoubleClick="myCustomControl_DoubleClick"/>
</Grid>
</Window>
Purtroppo, con questo codice a posto, quando l'utente fa doppio clic nel controllo, l'evento di controllo spara, ma si attiva anche l'evento Finestra. Ho provato a impostare e.Handled = true nell'evento di controllo, ma l'evento Window si attiva comunque. L'unica cosa che si è fermato il livello della finestra fare doppio clic su evento da sparo sta gestendo anteprima del controllo personalizzato fare doppio clic su evento di utilizzare questo:
private void myCustomControl_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
Anche se l'evento di anteprima ferma la finestra fare doppio clic prima di poter sparare, Non posso usarlo senza dover refactoring un bel po 'di codice. Il mio controllo personalizzato ha alcuni controlli figlio che gestiscono anche il suo evento doppio clic. Se l'evento di anteprima viene richiamato al livello di controllo padre, l'evento di doppio clic non esegue mai il tunnel verso il basso attraverso i controlli figlio e, quindi, facendo doppio clic non si esegue ciò che voglio che faccia. Se possibile, vorrei evitare di dover refactoring qualsiasi codice nei controlli figlio. Detto questo, la mia domanda è questa: c'è un modo per fermare l'evento a doppio clic a livello di finestra dal licenziamento una volta che l'evento di doppio clic del controllo è stato gestito? Mi sono fatto impazzire cercando di capirlo ... ogni aiuto è apprezzato!
Si prega di vedere ["Le domande dovrebbero includere" tag "nei loro titoli?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), dove il consenso è "no, non dovrebbero"! –