SimpleCheckBox (soporte WPF en Blend)
La casilla es un control de contenido que funciona como un control de alternancia que puede tener tres estados: activado, desactivado o indeterminado. El estado IsChecked indica si la casilla está activada. Para colocar contenido en una casilla en Blend para Visual Studio, haga doble clic en la casilla y, a continuación, dibuje un objeto en ella. Si desea colocar varios objetos en la casilla, primero debe agregar un panel de diseño como Grid o Canvas. Una casilla también puede mostrar texto de forma predeterminada; para modificar este texto, haga clic con el botón secundario en la casilla y, a continuación, haga clic en Editar texto.
Vista en la mesa de trabajo de un control SimpleCheckBox
Desglosar la plantilla de control
La plantilla del control SimpleCheckBox está formada por los siguientes elementos:
Un contenedor BulletDecorator , que se usa para alinear la casilla con el texto. El contenedor BulletDecorator usa dos elementos secundarios: una viñeta y un objeto de contenido (como ContentPresenter). El contenedor BulletDecorator se utiliza en otros controles (como RadioButton) que necesitan alinear texto con respecto a otro objeto.
El elemento Bullet , que contiene un panel Grid que a su vez contiene un elemento Path denominado CheckMark y un elemento Border. El elemento Path se usa para dibujar una marca "x".
El elemento ContentPresenter, que se usa para mostrar la propiedad Content de la casilla a la que se aplica la plantilla. Este elemento debe estar presente para mostrar el contenido de la casilla.
Desencadenadores de propiedad usados
Los desencadenadores de propiedad de la plantilla de control sirven para hacer que el control reaccione ante los cambios de propiedad. Puede hacer clic en los elementos en el panel Desencadenadores para ver las propiedades que cambian cuando se activa un desencadenador. Por ejemplo, en la plantilla SimpleCheckBox, si la propiedad IsChecked es False, la visibilidad del elemento de trazado CheckMark cambia a Collapsed. En otros desencadenadores, el fondo del elemento Border se cambia mediante los recursos de pincel.
Pinceles usados
Los siguientes recursos de pincel del diccionario de recursos SimpleStyles.xaml se utilizan en la plantilla SimpleCheckBox:
La propiedad Background del elemento Border se establece mediante el empleo de: NormalBrush cuando no hay ningún desencadenador activo, MouseOverBrush cuando IsMouseOver es True, PressedBrush cuando IsPressed es True y DisabledBackgroundBrush cuando IsEnabled es False.
La propiedad BorderBrush se establece mediante el empleo de: NormalBorderBrush cuando no hay ningún desencadenador activo, PressedBorderBrush cuando IsPressed es True y DisabledBorderBrush cuando IsEnabled es False.
La propiedad Foreground se establece mediante DisabledForegroundBrush cuando IsEnabled es False.
La propiedad Stroke del elemento CheckMark usa GlyphBrush para dibujar la marca "x".
Procedimientos recomendados e instrucciones de diseño
En general, debe usar un control Grid como raíz de la plantilla si cree que un diseñador de la interfaz de usuario (UI) de la aplicación va a agregar más elementos visuales al control. Blend busca un panel de diseño como el control Grid y lo activa de forma predeterminada para que los objetos nuevos de la mesa de trabajo se agreguen como objetos secundarios del panel de diseño.
El contenido de la casilla se muestra mediante el objeto ContentPresenter. Los objetos ContentPresenter enlazan automáticamente la plantilla con la propiedad Content del control al que se aplica la plantilla. Este objeto debe estar presente para que en la casilla se muestre el contenido del elemento primario con plantilla.
En algunos casos, el control con el que está trabajando no tendrá suficientes atributos para enlazar con la plantilla de control. Por ejemplo, el control CheckBox no proporciona ningún atributo para establecer el pincel del objeto CheckMark. En este caso, el trazo de CheckMark se establece en un pincel para que sea más fácil de cambiar. Puede crear una clase personalizada basada en el control CheckBox y agregar más atributos con los que enlazar o bien enlazar con uno de los atributos existentes. Para obtener un ejemplo de una clase personalizada, vea Crear controles personalizados en este Manual del usuario.
El objeto Grid tiene un tamaño fijo porque el objeto de trazado CheckMark se oculta y se muestra. Si el objeto Grid no tuviera un tamaño fijo, el texto de ContentPresenter se movería al cambiar la selección de la casilla. Como alternativa a un tamaño de Grid fijo y al ocultar el trazado CheckMark, puede cambiar el valor de Opacity de la propiedad Stroke en el objeto de trazado CheckMark a 0.