none
Es compatible SemanticZoom + VisualState Snapped RRS feed

  • Pregunta

  • Buenas de nuevo,

    Estoy intentando implementar el  SemanticZoom + VisualState Snapped pero no me sale bien la jugada.

    Cuando implemento por separado me funciona bien, cuando lo hago junto soy incapaz de agregar las vistas dentro del SemanticZoom.

    Es compatible?

    Un saludo


    Elbrinner

    domingo, 18 de noviembre de 2012 19:25

Respuestas

  • No se si te servirá, pero lo que yo haría es un semanticZoom para el estado Snapped y otro para los demás. Y habilitaría uno y deshabilitaría el otro en función del estado en el que estuviera la aplicación.

    Saludos

    • Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
    lunes, 19 de noviembre de 2012 2:49
  • Esto, lo mejor es hacerlo desde los VisualStates en modo diseño porque lo incrusta en el código XAML y es la propia vista la que se encarga de controlar qué se muestra en qué momento. Aquí tienes un ejemplo http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/

    Lo lógico sería que lo hicieras con Blend, pero hacerlo con Visual Studio es lo mismo.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    • Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
    lunes, 19 de noviembre de 2012 12:01

Todas las respuestas

  • Sí, debería serlo.

    Es decir, si haces Semantic Zoom y pones la aplicación en modo Snapped debería funcionar correctamente.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    domingo, 18 de noviembre de 2012 23:15
  • No se si te servirá, pero lo que yo haría es un semanticZoom para el estado Snapped y otro para los demás. Y habilitaría uno y deshabilitaría el otro en función del estado en el que estuviera la aplicación.

    Saludos

    • Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
    lunes, 19 de noviembre de 2012 2:49
  • Sí, debería serlo.

    Es decir, si haces Semantic Zoom y pones la aplicación en modo Snapped debería funcionar correctamente.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong


    Me da fallo al poner Semantic Zoom dentro del Snapped.

    Elbrinner

    lunes, 19 de noviembre de 2012 7:50
  • No se si te servirá, pero lo que yo haría es un semanticZoom para el estado Snapped y otro para los demás. Y habilitaría uno y deshabilitaría el otro en función del estado en el que estuviera la aplicación.

    Saludos

    Gracias, entonces lo que tengo que hacer es capturar el estado Snapped y deshabilitar el listbox no deseado. Como puedo verificar si el estado es Snapped desde C#?

    Un saludo


    Elbrinner

    lunes, 19 de noviembre de 2012 7:52

  • Tienes 4 combinaciones y deberías tener 4 controles de datos

    • 1 Control (GridView) para la vista normal en modo ZoomIn (sin hacer SemanticZoom)
    • 1 Control (GridView) para la vista normal en modo ZoomOut (haciendo Zoom)
    • 1 Control (ListView) para la vista snapped en modo ZoomIn
    • 1 Control (ListView) para la vista snapped en modo ZoomOut (esta la obviaría)

    La suyo es que en vista normal (panorámica, filled o vertical) puedas hacer ZoomIn y ZoomOut y que cuando lo pongas en modo Snapped muestres la lista correspondiente para ese modo. El cambio deberías hacerlo con los VisualStates.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    lunes, 19 de noviembre de 2012 11:44
  • Gracias, 

    Por lo que estuve jugando hoy por la mañana, solo necesito ocultar el zoon in cuando el estado está en Snapped.

    He intentando leer el estado de la pantalla (si está normal o  Snapped )   y poner un Visibily.Collapsed en la lista que no me interesa pero no encontré la propriedad que me indica cual es el estado de la pantalla actual.

    No hay algo como VisualStates.Snapped == true ?

    un salduo


    Elbrinner

    lunes, 19 de noviembre de 2012 11:55
  • Esto, lo mejor es hacerlo desde los VisualStates en modo diseño porque lo incrusta en el código XAML y es la propia vista la que se encarga de controlar qué se muestra en qué momento. Aquí tienes un ejemplo http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/

    Lo lógico sería que lo hicieras con Blend, pero hacerlo con Visual Studio es lo mismo.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    • Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
    lunes, 19 de noviembre de 2012 12:01
  • Esto, lo mejor es hacerlo desde los VisualStates en modo diseño porque lo incrusta en el código XAML y es la propia vista la que se encarga de controlar qué se muestra en qué momento. Aquí tienes un ejemplo http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/

    Lo lógico sería que lo hicieras con Blend, pero hacerlo con Visual Studio es lo mismo.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    Voy a probar al llegar en casa. 

    Gracias


    Elbrinner

    lunes, 19 de noviembre de 2012 14:44
  • Buenas de nuevo,

    La parte de problema anterior quedo solucionado pero pasa algo raro con el zoom ZoomedOutView este no funciona el evento clic, siempre que hago clic vuelve al zoom normal.

    Estuve buscando por internet y he visto que esto pasa cuando hay algún elemento que no le gusta. Pero hasta ahora no encontré cual.

    http://stackoverflow.com/questions/11932337/semantic-zoom-always-brings-back-to-the-first-item

     <SemanticZoom Margin="0,1,10,10" Grid.Row="1" HorizontalAlignment="Right" Width="1346" IsZoomedInViewActive="True" CanChangeViews="True">
        		<SemanticZoom.ZoomedInView>
        			<GridView
               
        				x:Name="itemGridView"
        				AutomationProperties.AutomationId="ItemsGridView"
        				AutomationProperties.Name="Items"
        				TabIndex="1"
        				Grid.RowSpan="2"
        				Padding="116,136,116,46"
        				ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
        				ItemTemplate="{StaticResource Standard250x250ItemTemplate}"
        				SelectionMode="None"
        				IsSwipeEnabled="false"
        				IsItemClickEnabled="True"
        				ItemClick="ItemView_ItemClick" Width="1296" Margin="0,-121,0,2"/>
    
    				
        	
    
    
        		</SemanticZoom.ZoomedInView>
        		<SemanticZoom.ZoomedOutView>
            		
    			
    					<GridView
               
        				x:Name="itemGridView2"
        				AutomationProperties.AutomationId="ItemsGridView2"
        				AutomationProperties.Name="Items"
        				TabIndex="1"
        				Grid.RowSpan="2"
        				Padding="116,136,116,46"
                        
        				ItemTemplate="{StaticResource Standard80ItemTemplate}"
        				SelectionMode="None"
        				IsSwipeEnabled="false" 
        			    Width="1336" Margin="2,-132,2,0" IsItemClickEnabled="True" ItemClick="itemGridView2_ItemClick"/>
    
        		</SemanticZoom.ZoomedOutView>
        	</SemanticZoom>
    un saludo

    Elbrinner

    miércoles, 21 de noviembre de 2012 7:01
  • Hola Elbrinner.

    Es sencillo, en el GridView del ZoomOut no tienes activada la posibilidad de hacer click que sí tienes puesta en el GridView del ZoomIn

    IsItemClickEnabled="True"

    P.D.: Recuerda que para preguntas diferentes es mejor crear otro hilo para que el resto de usuarios puedan encontrar mejor tanto las preguntas como las respuestas :o)


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    miércoles, 21 de noviembre de 2012 8:41
  • Gracias, como estaba un poco relacionado... la próxima abro en una nueva.

    Tengo este código en la última linea en ZoomedOutView

      Width="1336" Margin="2,-132,2,0" IsItemClickEnabled="True" ItemClick="itemGridView2_ItemClick"/>

    Es más, si copio el mismo código en los dos y cambio el nombre, no me funciona el enlace pero si el texto, la imagen...


    Elbrinner

    miércoles, 21 de noviembre de 2012 8:59
  • Tendrías que cambiar el comportamiento del "ZoomOut" si lo que quieres es entrar en un elemento, porque por defecto, el comportamiento es que cuando hagas click en un elemento, vuelva al ZoomIn y se sitúe en el grupo que habías seleccionado.

    Hoce algo parecido de esta forma

    x:Name="groupedItemGridView" AutomationProperties.AutomationId="ItemGridView" AutomationProperties.Name="Grouped Items" SelectionMode="Single" IsItemClickEnabled="False" SelectionChanged="ItemSelectionChanged" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" ItemTemplate="{StaticResource PhotoGridItemTemplate}" ItemContainerStyle="{StaticResource PhotoItemContainerStyle}" Margin="0" Padding="119,40,0,50"


    Como puedes ver, desactivamos el ItemClick y nos quedamos con el evento selectionchanged


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    miércoles, 21 de noviembre de 2012 9:18
  • No sabia que el comportamiento predeterminado era volver al zoom normal.

    Voy a probar por la tarde.

    gracias


    Elbrinner

    miércoles, 21 de noviembre de 2012 9:30
  • Tendrías que cambiar el comportamiento del "ZoomOut" si lo que quieres es entrar en un elemento, porque por defecto, el comportamiento es que cuando hagas click en un elemento, vuelva al ZoomIn y se sitúe en el grupo que habías seleccionado.

    Hoce algo parecido de esta forma

    x:Name="groupedItemGridView" AutomationProperties.AutomationId="ItemGridView" AutomationProperties.Name="Grouped Items" SelectionMode="Single" IsItemClickEnabled="False" SelectionChanged="ItemSelectionChanged" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}" ItemTemplate="{StaticResource PhotoGridItemTemplate}" ItemContainerStyle="{StaticResource PhotoItemContainerStyle}" Margin="0" Padding="119,40,0,50"


    Como puedes ver, desactivamos el ItemClick y nos quedamos con el evento selectionchanged


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    He probado de esta forma y no llega al evento ItemSelectionChanged es un poco raro.

    <GridView
    					 x:Name="itemGridView2"
    					 ItemTemplate="{StaticResource Standard80ItemTemplate}"
                            AutomationProperties.AutomationId="ItemGridView2"
                            AutomationProperties.Name="Items"
                            SelectionMode="Single"
                            IsItemClickEnabled="False"
                            SelectionChanged="ItemSelectionChanged"
                         
                            
    			 Margin="0" Padding="119,40,0,50"/>

    Un saludo

    Elbrinner

    miércoles, 21 de noviembre de 2012 12:48
  • Hola de nuevo Elbrinner.

    Revisando mi aplicación que ya está en la Store (Map my camera - esto no es publicidad) me he dado cuenta que la diferencia podría ser que mi fuente de datos es diferente para el ZoomOut, con lo que no existe un enlace "real" entre los datos. Intenta crear una nueva colección que sea la fuente de datos de tu gridview en el ZoomOut y dime si te cambia el resultado.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    jueves, 22 de noviembre de 2012 10:43
  • Hola Santiago, 

    Ahora mismo lo que hago es obtener los datos por LINQ y luego un datos.tolist(); 

    Hago un otro "SQL" y meto los datos en el GRID? Voy a probar más tarde y te comento.

    Por cierto, tengo tu app instalada para windows phone.

    Muchas gracias por ayudar, si quieres abro un nuevo tema, ya que mucha van a tener el mismo problema al implementar lo mismo.

    Un saludo 


    Elbrinner

    jueves, 22 de noviembre de 2012 10:59
  • Hola de nuevo Elbrinner.

    Revisando mi aplicación que ya está en la Store (Map my camera - esto no es publicidad) me he dado cuenta que la diferencia podría ser que mi fuente de datos es diferente para el ZoomOut, con lo que no existe un enlace "real" entre los datos. Intenta crear una nueva colección que sea la fuente de datos de tu gridview en el ZoomOut y dime si te cambia el resultado.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    Twitter | @saintwukong

    Hola de nuevo, he probado con otra fuente de datos y tampoco se dispara los eventos. Si saco el código fuera del zoom funciona el enlace. Tiene que ser algún elemento que no le gusta.

    gracias, un saludo


    Elbrinner

    sábado, 24 de noviembre de 2012 10:05