Eto: Preguntas sobre la portabilidad a Eto

Creado en 16 jun. 2017  ·  5Comentarios  ·  Fuente: picoe/Eto

¡Hola!

Estoy portando mi programa al marco Eto y durante la portabilidad y depuración de la interfaz tengo las siguientes preguntas:

  1. ¿Hay alguna forma de deshabilitar la escala de imágenes en los botones (botón) y por qué está habilitada de forma predeterminada?

  2. ¿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)?

  3. ¿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.

  4. ¿Por qué no hay absolutamente ninguna barra de estado y cuáles son las opciones para reemplazarlas, si realmente son necesarias (Panel + Etiquetas?).

  5. ¿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?

  6. ¿Hay alguna forma de establecer la alineación de los valores en las columnas de GridView?

  7. ¿Cómo puedo obtener la ventana de la aplicación activa actual (si hay varias ventanas de documentos SDI que tienen los mismos derechos)?

  8. ¿Planea crear un motor como NUnitForms en el futuro para probar aplicaciones de interfaz de usuario?

  9. 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?

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

  1. Esto se puede solucionar usando Styling
  2. Creo que esto está relacionado con este problema y creo que se puede solucionar con estilo.
  3. Porque es el comportamiento predeterminado de WinForms (por lo que recuerdo cuando trabajé con winforms) que se puede resolver mediante el estilo
  4. No todas las plataformas tienen / son compatibles con StatusBar, si necesito una, como dijiste, hago un diseño apilado con elementos.
  5. ¿Por qué no pone Drawable en diseño Scrollable y hace que el control Drawable sea tan grande como desee?
  6. TextBoxCell tiene una propiedad llamada TextAlignment y VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Ya tienes una respuesta para eso

Todos 5 comentarios

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

  1. Esto se puede solucionar usando Styling
  2. Creo que esto está relacionado con este problema y creo que se puede solucionar con estilo.
  3. Porque es el comportamiento predeterminado de WinForms (por lo que recuerdo cuando trabajé con winforms) que se puede resolver mediante el estilo
  4. No todas las plataformas tienen / son compatibles con StatusBar, si necesito una, como dijiste, hago un diseño apilado con elementos.
  5. ¿Por qué no pone Drawable en diseño Scrollable y hace que el control Drawable sea tan grande como desee?
  6. TextBoxCell tiene una propiedad llamada TextAlignment y VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Ya tienes una respuesta para eso

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;
    }
}

Cómo se hace el botón Eto para wpf

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

¿Fue útil esta página
0 / 5 - 0 calificaciones