Estou começando a acelerar o WPF e gostaria de criar um controle WPF reutilizável.
Quando olho para as opções para criar projetos no Visual Studio, vejo "WPF User Control Library" e "WPF Custom Control Library". Não está claro para mim qual é a diferença entre eles e minhas pesquisas no Google não apresentaram explicações decentes.
Gostaria de entender as diferenças entre eles e, idealmente, ver alguns exemplos de quando usar um sobre o outro.
wpf
user-controls
custom-controls
17 de 26
fonte
fonte
Respostas:
Na prática, controles personalizados são algo que você implementa no nível do código enquanto pode usar o XAML para controles do usuário. Os controles personalizados estendem uma das classes base de controle do WPF e fornecem funcionalidade adicional por meio do código, para que toda a lógica e representação adicionadas sejam implementadas dentro do código.
Um controle de usuário é tecnicamente um controle de conteúdo normal que você pode estender em algumas partes do código, mas geralmente é estendido colocando outros controles dentro dele. Assim como Kent mencionou, um UserControl é uma agregação de outros controles. Isso limita consideravelmente o que você pode fazer com um controle de usuário. É mais fácil de usar, mas mais limitado do que um controle personalizado completo.
Esses controles têm uma pequena diferença do ponto de vista do tempo de execução. Ao criar um aplicativo e colocar um UserControl nele, a árvore de controle terá um modelo concreto de UserControl dentro dele. Portanto, se considerarmos um exemplo esfarrapado de um botão especializado. Se você estivesse usando um controle de usuário, adicionaria um botão dentro do
<UserControl>
elemento. Ao usar um controle personalizado, você derivará o próprio controle de um botão provavelmente. A diferença seria visível na árvore lógica.Embora o controle personalizado forneça uma árvore lógica semelhante a
O UserControl daria uma árvore lógica de
Portanto, no final, o UserControl é apenas um ContentControl normal, que você pode estender um pouco e para o qual você pode predefinir o conteúdo. O controle personalizado fornece maior flexibilidade ao preço da facilidade de implementação, pois você precisa fazer toda a lógica e interação no código, em vez de ter o benefício do XAML.
Apesar de tudo isso, acho que não há muita diferença nos modelos do Visual Studio. Provavelmente, o Controle Personalizado do Visual Studio apenas cria um projeto com um controle personalizado vazio, enquanto o projeto Controle de Usuário é um projeto com um controle de usuário vazio. Posteriormente, você pode adicionar qualquer tipo de item ao projeto.
Atualizar
E minha opinião sobre quando usar o controle personalizado e o controle do usuário é que, se você pode fazer algo com um controle de usuário e o elemento de controle extra na árvore lógica não o incomoda, use um controle de usuário, pois eles são muito mais fáceis de usar. criar e manter. Use um controle personalizado apenas se você tiver um motivo para não usar um controle de usuário.
fonte
A
Control
representa algum comportamento que pode ser skinnable (modelável), enquanto aUserControl
geralmente é uma agregação deControl
s de nível mais alto que é específica para um aplicativo.Mais informações disponíveis aqui .
fonte