Ha pasado más de un año desde que escribí el último artículo. WPF es demasiado grande y hay demasiadas cosas por escribir. Todavía me centraré en los controles personalizados para ampliar los puntos técnicos relacionados con ellos. En la discusión, discutiremos este artículo. Lo más importante son las propiedades de dependencia de WPF. Los amigos que han estado en contacto con él deben comprenderlo un poco, pero antes de hablar sobre las propiedades de dependencia de WPF, echemos un vistazo a cómo funcionan las propiedades. en .net se usaban antes de que apareciera WPF.
Problemas comunes de atributos
propiedades básicas de c#
Propiedades de control personalizado de ASP.NET
Propiedades de control personalizado de WinForm
Propiedades de control personalizado de Javascript
propiedades básicas de c#
espacio de nombres WPFControlTutorialPart2_Basic
{
persona de clase pública
{
cadena privada _nombre;
Nombre de cadena pública
{
obtener {return_name}
establecer { _nombre = valor }
}
//propiedades automáticas
edad int pública {obtener; establecer}
}
}
Lo anterior debe considerarse como los atributos más básicos de C# y todos están familiarizados con ellos.
Nota: Las propiedades predeterminadas no se inicializan; de lo contrario, pueden producirse muchos errores desconocidos.
(Puede optar por leer lo siguiente. Si ha estado expuesto a las siguientes tecnologías, en realidad es muy simple)
Propiedades de control personalizado de ASP.NET
espacio de nombres WPFControlTutorialPart2_WebApp
{
clase pública WebFromControl: WebControl
{
cadena privada _controlName;
nombre de control de cadena pública
{
conseguir
{
devolver _controlName;
}
colocar
{
_controlName = valor;
}
}
anulación protegida void RenderContents (salida de HtmlTextWriter)
{
salida.Write("El nombre del control es:"+ControlName);
}
}
}
Lo anterior es un control de servidor web personalizado simple.
El control asp.net se centra en la representación. Se llamará al método RenderContents cada vez que se actualice la página, de modo que, independientemente de si las propiedades han cambiado o no, se volverán a representar. cambios para notificar el rediseño de la interfaz de usuario.
Nota: Si es obligatorio que el atributo ControlName tenga un valor para garantizar la validez del resultado de entrada, se puede procesar en el método get.
conseguir
{
if (_controlName == null) _controlName = cadena.Vacío;
devolver _controlName;
}
Propiedades de control personalizado de WinForm
Cuando la propiedad cambia, no se vuelve a dibujar. Debe llamar manualmente al método Invalidate para ingresar el método OnPaint para volver a dibujar.
Nota: Si desea volver a dibujar la interfaz, debe llamar manualmente al método
Propiedades de control personalizado de JavaScript
<div id="demoDiv" style="fondo-color: Rojo">hola</div>
<guión>
function ElementControl(nombreDeElemento) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = función(ancho) {
this.element.style.width = ancho;
}
var obj = nuevo ElementControl("demoDiv");
obj.setWidth("hola");
</script>
Los tipos de variables de JavaScript no tienen tipos fuertes. Por ejemplo, al configurar el ancho de dom, el tipo solo puede ser un número entero. Si el valor se pasa como una cadena, se producirá un error (por supuesto, esto es artificial).
(No sé si las personas que han realizado controles front-end js se sienten así. Definir una propiedad y luego reasignar y volver a dibujar el control es algo doloroso. Debe ajustarse manualmente y afectará todo el diseño del control. )
Nota: Verifique la validez de las asignaciones de atributos.
De los ejemplos anteriores, podemos ver que los atributos puros no pueden satisfacer las necesidades del programa.
Los requisitos anteriores son necesarios, ocurren con frecuencia y son muy frecuentes.
Soluciones estandarizadas
Lo anterior introduce una serie de problemas con atributos. Si hay problemas, habrá soluciones simplificadas.
El siguiente es un resumen personal:
Cuando una tecnología es relativamente compleja, alguien saldrá a definir un conjunto de estándares para simplificar la tecnología y mejorar la eficiencia de la producción.
No importa cuán cuidadosamente lo considere el diseñador, una vez que se define el estándar, se perderá flexibilidad.
Los estándares pueden entrar en conflicto con sus hábitos personales. Debe aprender a aceptar los estándares y volver al tema de WPF. Entonces la solución en WPF es la propiedad de dependencia (DependencyProperty).
Bien, este artículo es solo una introducción. Si ha encontrado estos problemas al usar atributos, tendrá algunos sentimientos.
Si se da cuenta de que los problemas anteriores realmente existen con los atributos, entonces este artículo ha completado su tarea.
Este artículo no pretende ser ampliado. El próximo artículo presentará nuevamente el sistema de propiedades de dependencia de WPF.
Todos son bienvenidos a discutir.