Olá!
Estou portando meu programa para o framework Eto e durante a portabilidade e depuração da interface, tenho as seguintes dúvidas:
Existe uma maneira de desativar o dimensionamento de imagens nos botões (Botão) e por que ele está ativado por padrão?
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)?
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.
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?).
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?
Existe uma maneira de definir o alinhamento de valores nas colunas GridView?
Como posso obter a janela do aplicativo ativo no momento (se houver várias janelas de documentos SDI com direitos iguais)?
Você planeja criar um mecanismo como o NUnitForms no futuro - para testar os aplicativos de IU?
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?
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
C#
new GridColumn()
{
HeaderText = header,
DataCell = new TextBoxCell()
{
Binding = binding,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
},
};
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;
}
}
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
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
C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };