problema interessanti relativi ai comandi che sparano da voci di menu contestuale ...Passando origine del ContextMenu in Command WPF
voglio sparare un comando per inserire una riga sotto il mio controllo, InsertRowCmd. Questo comando deve sapere dove inserire la riga.
Potrei usare Mouse.GetPosition(), ma questo mi porterebbe la posizione del mouse attualmente, che sarebbe sopra la voce di menu. Voglio invece ottenere l'origine del menu di scelta rapida.
Qualcuno ha qualche suggerimento su come passare l'origine del menu di scelta rapida come parametro al comando?
codice di esempio:
<UserControl x:Name="MyControl">
<!--...-->
<ContextMenu x:Name="menu">
<MenuItem Header="Insert Row" Command="{x:Static customCommands:MyCommands.InsertRowCmd}" CommandParameter="?"/>
</ContextMenu>
</UserControl>
mie idee correnti sono i seguenti:
-Usa click handler invece in modo che possa trovare l'origine nel codice. Il problema è che dovrei quindi gestire l'abilitazione/disabilitazione.
-Handle clic evento e salva l'origine del menu di scelta rapida. Passa queste informazioni salvate nel comando. Ho verificato che gli eventi di clic vengano attivati prima dell'esecuzione del comando.
Qualche idea?
EDIT:
sto usando di CommandSinkBinding per instradare Josh Smith che gestisce nella mia classe ViewModel comando. Quindi il codice che gestisce l'esecuzione del comando non sa nulla della vista.
Sto pensando che intendi "CommandParameter" all'inizio non "ConverterParameter"? –
Ti piacerebbe approfondire l'idea comportamentale allegata? –
Sì, grazie - risolto ed elaborato. –