Onde devo começar a projetar um Controle Personalizado que contém os objetos filho?

StackOverflow https://stackoverflow.com/questions/49562

  •  09-06-2019
  •  | 
  •  

Pergunta

Eu acho que este é um divertido engenharia-nível questão.

Eu preciso projetar um controle que exibe um gráfico de linha.O que eu quero ser capaz de fazer é usar um designer para adicionar vários Pens que, na verdade, descrever os dados e apresentação, de modo que ele acaba com Xaml algo ao longo dessas linhas:

<Chart>
  <Pen Name="SalesData" Color="Green" Data="..."/>
  <Pen Name="CostData" Color="Red" Data="..." />
  ...
</chart>

Meu primeiro pensamento é para ampliar ItemsControl para o Chart de classe.Será que me levou para onde eu quero ir, ou eu deveria estar olhando para ele a partir de uma direção diferente, como a extensão Panel?

O principal requisito é ser capaz de usá-lo em um designer sem a adição de qualquer código C#.Em ordem para que o mesmo seja viável, precisa manter a sua estrutura em árvore-modelo de modo de exibição.Em outras palavras, se eu fosse trabalhar com isso no Expression Blend ou Mobiform Aurora, eu seria capaz de selecionar o gráfico a partir da árvore lógica ou selecionar qualquer uma das indivíduo canetas para editar suas propriedades.

Foi útil?

Solução

Eu iria com o Gráfico como um ItemsControl e seu ItemsPanel ser uma Tela(Para alguns, uso de luz eu iria com Grade como ItemsPanel).E cada Caneta vai ser um CustomControl derivada da Polilinha classe.Isso faz algum sentido?

Outras dicas

Para aqueles interessados em fazer o seu próprio controle de um desenvolvimento pessoal de ponto de vista (como afirmado na pergunta original), então eu gostaria de sugerir uma estrutura neste formato.

<Chart>
  <Chart.Pens>
    <Pen Name="SalesData" Data="{Binding Name=SalesData}" />        
    <Pen Name="CostData">
      <Pen.Data>
        <PenData Y="12" X="Jan" />
        <PenData Y="34" X="Feb" />
      </Pen.Data>
    </Pen>
  </Chart.Pens>
</Chart>

Para que você vai precisar para expor uma coleção de Canetas no controle de usuário (eu não gostaria de ver isso como uma derivada de ItemsControl de controle).Este derivado de controle do usuário irá encapsular outros controles normalmente uma grade para colocar um rótulo para o título, etiquetas para o eixo nomes, possivelmente, de uma Tela para a área de desenho e um ItemsControl para exibir os itens na Legenda.


Para aqueles que procuram um pronto para ir a solução

Para aqueles que procuram um pronto para ir a solução, então, eu tinha confira CodePlex para VisiFire do WPF gráfico de controle.É WPF e Silverlight compatível e ainda tem um Aplicativo do Silverlight para que você insira seus dados e estilo e gerar XAML (ou HTML) para colar em seu aplicativo.

Outra opção é estender a Lona para o gráfico e estender Forma para as Canetas.Em seguida, dinamicamente desenhar a forma de acordo com a Cor/propriedades de Dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top