¡Hola!
Estoy portando mi programa al marco Eto y durante la portabilidad y depuración de la interfaz tengo las siguientes preguntas:
¿Hay alguna forma de deshabilitar la escala de imágenes en los botones (botón) y por qué está habilitada de forma predeterminada?
¿Por qué cuando el botón está configurado en Habilitado = falso, el botón se vuelve pálido y el icono permanece brillante? ¿Cómo se puede solucionar esto (modo WPF)?
¿Por qué en los botones del modo WinForms de la barra de herramientas no se ajustan al tamaño de las imágenes? ¿Se emite menos tamaño de imagen real? Debido a esto, las imágenes tienen un tamaño menor que el real y están borrosas.
¿Por qué no hay absolutamente ninguna barra de estado y cuáles son las opciones para reemplazarlas, si realmente son necesarias (Panel + Etiquetas?).
¿Cómo implementar correctamente CustomControl que debería unir las propiedades de los componentes dibujables y desplazables? Intenté convertirlos en un híbrido, pero no funcionó. ¿Se anidará Drawable en Scrollable? ¿O hay una mejor solución?
¿Hay alguna forma de establecer la alineación de los valores en las columnas de GridView?
¿Cómo puedo obtener la ventana de la aplicación activa actual (si hay varias ventanas de documentos SDI que tienen los mismos derechos)?
¿Planea crear un motor como NUnitForms en el futuro para probar aplicaciones de interfaz de usuario?
En el modo WPF, si ClientSize no está asignado al cuadro de diálogo, todo está perfectamente alineado con el diseño especificado y el cuadro de diálogo en sí adquiere un buen tamaño. Sin embargo, en el modo WinForms, el cuadro de diálogo resulta ser pequeño y los componentes no se alinean correctamente. WinForms: ¿compatible como plataforma?
¿Me puedes ayudar?
Oye,
Creo que debería abrir números separados para cada uno de sus problemas, solo puedo responder algunos puntos suyos.
Eto no pretende actuar de la misma manera en todas las plataformas (como dijo @cwensley en algunas de las cuestiones que se plantearon), su principal objetivo es lucir y actuar de forma nativa en cada plataforma, esa es la principal razón de sus problemas. Puede resolver algunos de ellos usando Estilo
C#
new GridColumn()
{
HeaderText = header,
DataCell = new TextBoxCell()
{
Binding = binding,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
},
};
Me da vergüenza preguntar, pero no puedo resolver "¿Hay alguna forma de deshabilitar el escalado de imágenes en los botones (Botón) y por qué está habilitado de forma predeterminada?" con estilos como lo sugiere @SlowLogicBoy.
Lo más lejos que he podido ir es:
Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => ?????? ));
¿Puede dar un ejemplo de cómo lo hace?
Gracias
No estoy familiarizado con wpf, así que esto es lo que puedo darte:
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;
}
}
Gracias @SlowLogicBoy , su código es definitivamente un buen punto de partida para obtener acceso al botón Wpf, intentaré continuar y descubrir cómo deshabilitar la escala por mi cuenta :)
Para los registros, el siguiente fragmento hace el trabajo:
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;
});
Gracias @SlowLogicBoy por su ayuda
Comentario más útil
Oye,
Creo que debería abrir números separados para cada uno de sus problemas, solo puedo responder algunos puntos suyos.
Eto no pretende actuar de la misma manera en todas las plataformas (como dijo @cwensley en algunas de las cuestiones que se plantearon), su principal objetivo es lucir y actuar de forma nativa en cada plataforma, esa es la principal razón de sus problemas. Puede resolver algunos de ellos usando Estilo
C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };