Principales respuestas
Es compatible SemanticZoom + VisualState Snapped

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
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong- Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong -
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong
Me da fallo al poner Semantic Zoom dentro del Snapped.Elbrinner
-
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong -
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong- Marcado como respuesta ElbrinnerMVP lunes, 19 de noviembre de 2012 14:44
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukongVoy a probar al llegar en casa.
Gracias
Elbrinner
-
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 saludoElbrinner
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong -
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong -
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukongHe 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 saludoElbrinner
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukong -
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
-
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 DevelopmentMCTS | SharePoint 2010, ConfiguringBlog | Blog en GeeksTwitter | @saintwukongHola 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