Já se passou mais de um ano desde que escrevi o último artigo. O WPF é muito grande e há muitas coisas para escrever. Ainda vou me concentrar nos controles personalizados para expandir os pontos técnicos relacionados a eles. na discussão. Discutiremos este artigo A coisa mais importante são as propriedades de dependência do WPF. Amigos que estiveram em contato com ele devem ter algum conhecimento sobre isso, mas antes de falarmos sobre as propriedades de dependência do WPF, vamos dar uma olhada em como as propriedades. em .net foram usados antes do WPF aparecer.
Problemas comuns de atributos
propriedades básicas do c#
Propriedades de controle personalizado do ASP.NET
Propriedades de controle personalizado do WinForm
Propriedades de controle customizado Javascript
propriedades básicas do c#
namespace WPFControlTutorialPart2_Basic
{
classe pública Pessoa
{
string privada _nome;
nome da string pública
{
obter {retornar _nome};
definir {_nome = valor};
}
//propriedades automáticas
public int Idade {obter definido;
}
}
Os itens acima devem ser considerados os atributos mais básicos do C# e todos estão familiarizados com eles.
Nota: As propriedades padrão não são inicializadas, caso contrário, poderão ocorrer muitos erros desconhecidos.
(Você pode optar por ler o seguinte. Se você foi exposto às tecnologias a seguir, é realmente muito simples)
Propriedades de controle personalizado do ASP.NET
namespace WPFControlTutorialPart2_WebApp
{
classe pública WebFromControl: WebControl
{
string privada _controlName;
string pública ControlName
{
pegar
{
return _controlNome;
}
definir
{
_controlNome = valor;
}
}
substituição protegida void RenderContents (saída HtmlTextWriter)
{
output.Write("O nome do controle é:"+ControlName);
}
}
}
O acima é um controle simples de servidor web personalizado.
O controle asp.net se concentra na renderização. O método RenderContents será chamado toda vez que a página for atualizada, de forma que independentemente de as propriedades terem sido alteradas ou não, elas serão renderizadas novamente. alterações para notificar o redesenho da IU.
Nota: Caso seja obrigatório que o atributo ControlName tenha um valor para garantir a validade do resultado de entrada, ele pode ser processado no método get.
pegar
{
if (_controlName == nulo) _controlName = string.Empty;
return _controlNome;
}
Propriedades de controle personalizado do WinForm
Quando a propriedade muda, ela não é redesenhada. Você deve chamar manualmente o método Invalidate para inserir o método OnPaint para redesenhar.
Nota: Se quiser redesenhar a interface, você deve chamar manualmente o método
Propriedades de controle personalizado JavaScript
<div id="demoDiv" style="background-color: Red">olá</div>
<roteiro>
function ElementControl(nomedoelemento) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = função (largura) {
this.element.style.width = largura;
}
var obj = new ElementControl("demoDiv");
obj.setWidth("olá");
</script>
Os tipos de variáveis JavaScript não possuem tipos fortes. Por exemplo, ao definir a largura do dom, o tipo só pode ser um número inteiro. Se o valor for passado como uma string, ocorrerá um erro (é claro que isso é artificial).
(Não sei se as pessoas que fizeram controles de front-end js se sentem assim. Definir uma propriedade e depois reatribuir e redesenhar o controle é uma coisa dolorosa. Ele deve ser ajustado manualmente e afetará todo o design do controle. )
Nota: Verifique a validade das atribuições de atributos.
A partir dos exemplos acima, podemos ver que atributos puros não podem atender às necessidades do programa.
Os requisitos acima são necessários, ocorrem frequentemente e são muito frequentes.
Soluções padronizadas
O texto acima apresenta uma série de problemas com atributos. Se houver problemas, haverá soluções simplificadas.
A seguir está um resumo pessoal:
Quando uma tecnologia é relativamente complexa, alguém definirá um conjunto de padrões para simplificar a tecnologia e melhorar a eficiência da produção.
Não importa quão cuidadosamente o projetista considere isso, uma vez definido o padrão, a flexibilidade será perdida.
Os padrões podem entrar em conflito com seus hábitos pessoais. Você deve aprender a aceitar os padrões e retornar ao tópico do WPF. Então a solução no WPF é a propriedade de dependência (DependencyProperty).
Ok, este artigo é apenas uma introdução. Se você encontrou esses problemas ao usar atributos, terá alguns sentimentos.
Se você perceber que os problemas acima realmente existem com atributos, então este artigo completou sua tarefa.
Este artigo não se destina a ser expandido. O próximo artigo apresentará novamente o sistema de propriedades de dependência do WPF.
Todos são bem-vindos para discutir.