Come posso associare uno dei miei pulsanti di controllo a X Pulsante che chiude la finestra? Voglio solo creare il pulsante Annulla che chiude la finestra. Sto usando MVVM nel mio codice. Se possibile farlo solo in xaml, non ho alcun codice speciale con il clic del tasto.Come associare al pulsante di chiusura della finestra il tasto X
risposta
È possibile chiamare semplicemente il metodo Close()
, che chiuderà la finestra.
private void MyButton_Click(object s, RoutedEventArgs e)
{
Close();
}
Se si tratta di WPF (e purché non ricordo male) si può semplicemente utilizzare CallMethodAction
dal genitore come un comportamento e utilizzare metodo Close() tramite appena XAML. Qualcosa di simile a;
Parent Window x:Name="window"
spazi dei nomi;
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
-
<Button Content="Cancel">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction
TargetObject="{Binding ElementName=window}"
MethodName="Close"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
Spero che questo aiuti.
Non dimenticare che è necessario fare riferimento alle appropriate librerie di blend nel progetto per utilizzare questo –
Touché @BobVale ▲ 1 :) –
Beh dannazione vado a rispondere andando solo con le specifiche OP di xaml e non riesco nemmeno a ottenere un upvote haha sprecato sforzo. –
MVVM soluzione senza code-behind potrebbe anche apparire come questo:
Vista:
<Button Content="Cancel" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
ViewModel:
public ICommand CloseWindowCommand
{
get
{
return new RelayCommand<Window>(SystemCommands.CloseWindow);
}
}
Ma SystemCommands è da .net-4.5 quindi se rock in alcune versioni precedenti di .net puoi anche tu se seguente.
public ICommand CloseWindowCommand
{
get
{
return new RelayCommand<Window>((window) => window.Close());
}
}
Questo * tecnicamente * rompe il pattern MVVM dal ViewModel non dovrebbe avere alcun riferimento per visualizzare gli assembly (come System.Windows. *). – qJake
@SpikeX Non voglio discutere e so che in questo caso non è la soluzione migliore e non è nemmeno necessario farlo in VM, ma non direi che MVVM è rigoroso. Non usi System.Windows.Threading nelle tue macchine virtuali? O Application.Dispatcher? –
No. Binding è thread-safe e può succedere su un thread che non è il thread dell'interfaccia utente, quindi non è necessario il dispatcher. Se è necessario utilizzare il dispatcher, si invierà un messaggio disaccoppiato alla vista e la vista si prenderà cura di esso. – qJake
Installare Microsoft.Expression.Interactions da nugget e utilizzare la risposta data da Chris W. in alto.
"usa la risposta data da Chris W. sopra" non è una risposta, specialmente se quella risposta scompare o non è più "sopra". Fornire una risposta completa o semplicemente commentare sotto la risposta specifica esistente. –
- 1. Chiusura della finestra di dialogo jQuery al clic del pulsante
- 2. come gestire il pulsante di chiusura della finestra nel cacao
- 3. Chiusura della finestra video utilizzando il pulsante "X" vicino in OpenCV, Python
- 4. Come associare lo sfondo della finestra al colore di sfondo della finestra di un tema?
- 5. Evento di chiusura della finestra di dialogo Dojo su X (in alto a destra)
- 6. Cambia colore del pulsante di chiusura nella finestra modale bootstrap
- 7. Chiusura di una finestra di kendoui con pulsante Chiudi personalizzato all'interno della finestra
- 8. Nascondi il pulsante di chiusura "X" in Fancybox
- 9. OpenCV - chiusura della finestra di visualizzazione dell'immagine
- 10. Colorbox - rimozione del pulsante di chiusura da una finestra specifica
- 11. Come posso rilevare che il pulsante di chiusura (X) di una finestra di dialogo dell'interfaccia utente jQuery è stato selezionato, separatamente dalla finestra di dialogo/chiusura?
- 12. Come gestire l'evento di chiusura della finestra di PowerShell se l'utente fa clic sul pulsante Chiudi ('X')
- 13. Jquery impedisce la chiusura della finestra
- 14. Come associare premendo "invio" con il pulsante di selezione?
- 15. Come associare il pulsante a ListView.SelectedItem
- 16. Cattura evento chiusura finestra
- 17. Qt: Come gestisco l'evento dell'utente premendo il pulsante "X" (chiudi)?
- 18. Come disattivare il pulsante di chiusura in C?
- 19. Disabilita il pulsante di chiusura del Bootbox
- 20. Come associare il cassetto di navigazione al pulsante di trascinamento esterno?
- 21. Evento di chiusura della finestra di dialogo in jquery mobile
- 22. Javascript associare l'evento al nome della classe
- 23. Chiusura finestra popup Android
- 24. Come si modifica lo stato del pulsante di chiusura della finestra in Cocoa?
- 25. Come rimuovere il pulsante di chiusura dalle schede in javafx
- 26. Impedisci il bootbox dalla chiusura della finestra popup
- 27. UWP: lo stile dei pulsanti della finestra non funziona sul pulsante di chiusura
- 28. Ignora controllo pulsante "X" di Tkinter (il pulsante che chiude la finestra)
- 29. Chiusura della finestra popup dopo 3 secondi
- 30. distrugge la sessione alla chiusura della finestra?
Sto utilizzando MVVM. –
** Non abbiate paura di inserire codice nel codebehind di un'applicazione MVVM. ** Se la logica che state implementando è esclusiva per la vista (in questo caso, sì, perché state chiudendo la finestra), allora appartiene al codebehind, non al viewmodel. – qJake