Usuario
¿como controlo de forma sencilla los eventos de entrada?

Pregunta
-
Muy buenas el problema es que en la aplicación que estoy me he dado de que al pasar el cursor por un botón se sombrea a blanco o hace un evento que a mi no me interesa que se sombree a blanco o cuando en un botón pulsas se sombrea el botón a blanco en el evento click o el evento pointerentered que creo que es el que se activa entrando en el área de un botón o listbox de un control en definitiva como controlo que cuando le de a click no haga nada o que haga lo que a mi me interese.
click
http://imageshack.us/a/img836/9339/10231412.th.png
pointerentered creo o algún evento de poner el cursor encima del control
http://imageshack.us/a/img201/6631/78335877.png
eso es lo que necesito controlar me he estado lo de las propiedades de dependencia y no se si se hace con eso gracias.
bueno aquí teneis
Todas las respuestas
-
Hola Onzulin.
Tendrías que editar la plantilla del botón y cambiar las propiedades modificadas en el VisualState correspondiente, en concreto, en el Grupo (VisualStateGroup) "CommonStates", los estados "Pressed", "PointeOver"
<VisualState x:Name="PointerOver"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Fill"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverBackgroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPointerOverForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="Pressed"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Stroke"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Fill"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState>
y en el grupo FocusStates
<VisualStateGroup x:Name="FocusStates"> <VisualState x:Name="Focused"> <Storyboard> <DoubleAnimation Storyboard.TargetName="FocusVisualWhite" Storyboard.TargetProperty="Opacity" To="1" Duration="0"/> <DoubleAnimation Storyboard.TargetName="FocusVisualBlack" Storyboard.TargetProperty="Opacity" To="1" Duration="0"/> </Storyboard> </VisualState> <VisualState x:Name="Unfocused" /> <VisualState x:Name="PointerFocused" /> </VisualStateGroup>
Si te fijas, están haciendo modificaciones tanto en el borde como en el background en cada uno de los estados"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"MCTS | SharePoint 2010, Application DevelopmentMCTS | SharePoint 2010, ConfiguringMS | Programming in HTML5 with JavaScript and CSS3 (MS)Blog | Blog en GeeksTwitter | @saintwukong -
-
Esto es mas fácil de modificar el tema de la animación que quiero para los eventos cpon blend de forma grafica o algo, me estoy leyendo esta documentación pero veo que no explica como hacerlo,
-
Hola Onzulin.
Botón derecho sobre el botón => Editar plantilla -> Editar una copia
Esta acción te preguntará dónde y con qué nombre quieres crear la plantilla. Mi consejo es que lo pongas en un fichero de recursos aparte para que sea reutilizable aunque lo puedes ubicar en el fichero principal de recursos app.xaml donde también será reutilizable o directamente en la propia página si sólo lo quieres local.
"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"MCTS | SharePoint 2010, Application DevelopmentMCTS | SharePoint 2010, ConfiguringMS | Programming in HTML5 with JavaScript and CSS3 (MS)Blog | Blog en GeeksTwitter | @saintwukong -
-
No es exactamente una animación, son estados visuales que responden a determinados eventos.
En tu caso, por ejemplo mira este estado visual Pressed
<VisualState x:Name="Pressed"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="OutlineGlyph" Storyboard.TargetProperty="Stroke"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGlyph" Storyboard.TargetProperty="Fill"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Content" Storyboard.TargetProperty="Foreground"> <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource AppBarItemPressedForegroundThemeBrush}"/> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState>
Si te fijas, en el ObjectAnimationUsingKeyFrames hay una propiedad Storyboard.TargetProperty que indica qué propiedad del botón es la que se va a modificar y, anidado, tiene un DiscreteObjectKeyFrame que indica el valor que se le va a aplicar. Para quitarle el Background, por ejemplo, deberías eliminar la animación que modifica la propiedad "Fill", si quisieras quitarle el borde, quita la animación que modifica el "Stroke", etc...
Como libros, te puedo recomendar el de el gran Josue Yeray http://geeks.ms/blogs/jyeray/archive/2013/01/15/libro-desarrollo-en-windows-8-y-windows-phone-8-con-xaml-y-c.aspx
"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"MCTS | SharePoint 2010, Application DevelopmentMCTS | SharePoint 2010, ConfiguringMS | Programming in HTML5 with JavaScript and CSS3 (MS)Blog | Blog en GeeksTwitter | @saintwukong -
ya bueno lo quiero para toda la aplicación que se aplique a todo lo que ponga en la aplicación sin tener que ir botón a botón quiero hacerlo en toda la aplicación imagino que será modificando el standarstyle.xaml, pero que tengo que modificar es lo que no entiendo y me voy a leer de nuevo toda la pagina a ver la que te he puesto.
-
Mi recomendación es que no edites el fichero standarstyle, sino que lo hagas como te comenté, es decir, editar una copia de la plantilla y después al resto de botones que quieras que tengan ese formato, les aplicas esa plantilla.
En cuanto a lo que tienes que modificar, es precisamente lo que te puse en el último mensaje.
"Si te fijas, en el ObjectAnimationUsingKeyFrames hay una propiedad Storyboard.TargetProperty que indica qué propiedad del botón es la que se va a modificar y, anidado, tiene un DiscreteObjectKeyFrame que indica el valor que se le va a aplicar. Para quitarle el Background, por ejemplo, deberías eliminar la animación que modifica la propiedad "Fill", si quisieras quitarle el borde, quita la animación que modifica el "Stroke", etc..."
"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"MCTS | SharePoint 2010, Application DevelopmentMCTS | SharePoint 2010, ConfiguringMS | Programming in HTML5 with JavaScript and CSS3 (MS)Blog | Blog en GeeksTwitter | @saintwukong