2009-06-15 11 views
5

Questo è un problema vecchio di elementi interattivi all'interno di elementi interattivi, ma voglio che ScatterViewItem contenga altri elementi interattivi di superficie come SurfaceButton o SurfaceCheckBox. Ho tutti i miei elementi lì dentro e reagiscono ai tocchi ecc. Il problema è che ottengo il normale comportamento di ScatterView solo quando clicco su un'area che non contiene un controllo.ScatterViewItems contenenti elementi interattivi di superficie

Esiste una soluzione elegante per consentire il trascinamento anche quando il contatto si trova su un SurfaceButton o SurfaceCheckbox?

ad es.

<s:ScatterView >  
    <Grid Width="200" Height="200"> 
     <s:SurfaceButton /> 
    </Grid> 
</s:ScatterView> 

risposta

1

Dopo aver chiesto la stessa domanda sul forum della comunità di superficie, la risposta è stata che questo è coerente con tutti i comportamenti di controllo WPF. Ad esempio, se aggiungi elementi interattivi a una casella di riepilogo, ListBox non reagirà alle interazioni quando il mouse si trova sopra il pulsante.

Se qualcun altro incontra questo problema, è probabilmente meglio risolvere questo problema attraverso la progettazione del controllo piuttosto che tentare di violare questo comportamento insieme. Il comportamento di controllo dovrebbe rimanere coerente da un'app all'altra e da un controllo all'altro.

+0

E 'stato per anni e ancora nessun post. L'ho contrassegnato come la risposta per ora, ma se qualcuno in futuro aggiunge una risposta migliore, la cambierò;) –

+0

Desideri che qualcuno l'abbia esaminato ulteriormente. È abbastanza naturale avere elementi interattivi l'uno nell'altro. –

0

è possibile "modificare" questo comportamento ascoltando gli eventi ContactLeave su uno dei controlli figlio e, in tal caso, chiama contact.Capture (scatterviewitem). questo dirà allo svi di prendere il sopravvento ascoltando e rispondendo al contatto. tuttavia, è è andando a risultare in un comportamento incoerente con altre parti di Surface e potrebbe essere fonte di confusione. è anche incoerente anche con se stesso ... questo rende possibile passare dal controllo interno a SVI senza alzare il dito ma l'utente deve ancora alzare il dito per tornare al controllo interno.