Eto: Perguntas sobre a transferência para Eto

Criado em 16 jun. 2017  ·  5Comentários  ·  Fonte: picoe/Eto

Olá!

Estou portando meu programa para o framework Eto e durante a portabilidade e depuração da interface, tenho as seguintes dúvidas:

  1. Existe uma maneira de desativar o dimensionamento de imagens nos botões (Botão) e por que ele está ativado por padrão?

  2. Por que quando o botão está definido como Enabled = false, o botão fica pálido e o ícone permanece brilhante? Como isso pode ser corrigido (modo WPF)?

  3. Por que os botões do modo WinForms da barra de ferramentas não são redimensionados para o tamanho das imagens - menos tamanho de imagem real é gerado? Por causa disso, as imagens são menores que o tamanho real e borradas.

  4. Por que não há absolutamente nenhuma barra de status e quais são as opções para substituí-las, se forem realmente necessárias (Painel + Etiquetas?).

  5. Como implementar corretamente o CustomControl que deve unir as propriedades dos componentes Drawable e Scrollable? Tentei torná-los um híbrido, mas não funcionou. O Drawable será aninhado em Scrollable? ou há uma solução melhor?

  6. Existe uma maneira de definir o alinhamento de valores nas colunas GridView?

  7. Como posso obter a janela do aplicativo ativo no momento (se houver várias janelas de documentos SDI com direitos iguais)?

  8. Você planeja criar um mecanismo como o NUnitForms no futuro - para testar os aplicativos de IU?

  9. No modo WPF, se ClientSize não for atribuído à caixa de diálogo, tudo ficará perfeitamente alinhado com o layout especificado e a caixa de diálogo em si terá um bom tamanho. No entanto, no modo WinForms, a caixa de diálogo é pequena e os componentes não se alinham corretamente. WinForms - com suporte como plataforma?

Pode me ajudar?

Comentários muito úteis

Ei,

Acho que você deveria abrir edições separadas para cada um de seus problemas, só posso responder a alguns pontos seus.
O Eto não pretende atuar da mesma forma em todas as plataformas (como disse @cwensley em algumas das questões que foram levantadas), o seu principal objetivo é parecer e agir de forma nativa em cada plataforma, esse é o principal motivo dos seus problemas. Você pode resolver alguns deles usando Styling

  1. Isso pode ser resolvido usando Styling
  2. Acho que isso está relacionado a esse problema e acho que pode ser resolvido com um estilo.
  3. Porque é o comportamento padrão do WinForms (pelo que me lembro quando trabalhei com winforms) solucionável por estilo
  4. Nem todas as plataformas possuem / suportam StatusBar, se eu precisar de uma, como você disse, faço um layout empilhado com itens nele.
  5. Por que você simplesmente não coloca Drawable no layout de rolagem e torna o controle Drawable tão grande quanto você deseja?
  6. TextBoxCell tem uma propriedade chamada TextAlignment e VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Você já tem uma resposta para isso

Todos 5 comentários

Ei,

Acho que você deveria abrir edições separadas para cada um de seus problemas, só posso responder a alguns pontos seus.
O Eto não pretende atuar da mesma forma em todas as plataformas (como disse @cwensley em algumas das questões que foram levantadas), o seu principal objetivo é parecer e agir de forma nativa em cada plataforma, esse é o principal motivo dos seus problemas. Você pode resolver alguns deles usando Styling

  1. Isso pode ser resolvido usando Styling
  2. Acho que isso está relacionado a esse problema e acho que pode ser resolvido com um estilo.
  3. Porque é o comportamento padrão do WinForms (pelo que me lembro quando trabalhei com winforms) solucionável por estilo
  4. Nem todas as plataformas possuem / suportam StatusBar, se eu precisar de uma, como você disse, faço um layout empilhado com itens nele.
  5. Por que você simplesmente não coloca Drawable no layout de rolagem e torna o controle Drawable tão grande quanto você deseja?
  6. TextBoxCell tem uma propriedade chamada TextAlignment e VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Você já tem uma resposta para isso

Tenho vergonha de perguntar, mas não consigo resolver "Existe uma maneira de desabilitar o dimensionamento de imagens nos botões (Botão) e por que está habilitado por padrão?" com Estilos, conforme sugerido por @SlowLogicBoy.
O mais longe que consegui ir foi:

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => ?????? ));

Você pode dar um exemplo de como fazer isso?
Obrigado

Não estou familiarizado com wpf, então isso é o que posso dar a você:

using swc = System.Windows.Controls;

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => {
    var grid = handler.Control.Content as swc.Grid;
    if(grid == null) return; //Something in ButtonHandler changed

    var imageCtrl = grid.GetChildOfType<swc.Image>().SingleOrDefault();
    if(imageCtrl == null) return; //Something in ButtonHandler changed

    //TODO: Stuff with imageCtrl
});

static IEnumerable<T> GetChildOfType<T>(this swc.Grid self)
{
    foreach (var item in self.Children)
    {
        if(item is T ctrl)
            yield return ctrl;
    }
}

Como o botão Eto é feito para wpf

Obrigado @SlowLogicBoy , seu código é definitivamente um bom ponto de partida para obter acesso ao botão Wpf, tentarei prosseguir e descobrir como desabilitar a escala por conta própria :)

Para os registros, o seguinte snippet faz o trabalho:

Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler =>
{
    var grid = handler.Control.Content as swc.Grid;
    if (grid == null)
        return;
    var image = grid.Children.OfType<swc.Image>().FirstOrDefault();
    if (image == null)
        return;
    image.Stretch = System.Windows.Media.Stretch.None;
});

Obrigado @SlowLogicBoy por sua ajuda

Esta página foi útil?
0 / 5 - 0 avaliações