Eto: Fragen zur Portierung auf Eto

Erstellt am 16. Juni 2017  ·  5Kommentare  ·  Quelle: picoe/Eto

Hallo!

Ich portiere mein Programm auf das Eto-Framework und beim Portieren und Debuggen der Schnittstelle habe ich folgende Fragen:

  1. Gibt es eine Möglichkeit, die Skalierung von Bildern in Schaltflächen (Button) zu deaktivieren und warum ist sie standardmäßig aktiviert?

  2. Warum wird die Schaltfläche blass und das Symbol bleibt hell, wenn die Schaltfläche auf Enabled = false gesetzt ist? Wie kann das behoben werden (WPF-Modus)?

  3. Warum skalieren im WinForms-Modus Schaltflächen der Symbolleiste nicht auf die Größe der Bilder - es wird weniger echte Bildgröße ausgegeben? Aus diesem Grund sind die Bilder kleiner als die tatsächliche Größe und verschwommen.

  4. Warum gibt es überhaupt keine Statusleisten und welche Möglichkeiten gibt es, diese zu ersetzen, wenn sie wirklich benötigt werden (Panel + Labels?).

  5. Wie kann man CustomControl richtig implementieren, das die Eigenschaften Drawable und Scrollable Komponenten vereinen sollte? Ich habe versucht, sie zu einem Hybrid zu machen, aber es hat nicht funktioniert. Wird Drawable in Scrollable verschachtelt? Oder gibt es eine bessere Lösung?

  6. Gibt es eine Möglichkeit, die Ausrichtung der Werte in den GridView-Spalten festzulegen?

  7. Wie erhalte ich das aktuell aktive Anwendungsfenster (wenn es mehrere gleichberechtigte SDI-Dokumentenfenster gibt)?

  8. Planen Sie, in Zukunft eine Engine wie NUnitForms zu entwickeln, um UI-Anwendungen zu testen?

  9. Wenn im WPF-Modus dem Dialogfeld keine ClientSize zugewiesen ist, ist alles perfekt auf das angegebene Layout ausgerichtet, und das Dialogfeld selbst nimmt eine gute Größe an. Im WinForms-Modus fällt der Dialog jedoch klein aus und die Komponenten sind nicht richtig ausgerichtet. WinForms - als Plattform unterstützt?

Kannst du mir helfen?

Hilfreichster Kommentar

Hey,

Ich denke, Sie sollten für jedes Ihrer Probleme separate Themen eröffnen, ich kann nur einige Ihrer Punkte beantworten.
Eto zielt nicht darauf ab, auf allen Plattformen gleich zu agieren (wie @cwensley in einigen der Styling verwenden

  1. Dies ist lösbar mit Styling
  2. Ich denke, das hängt mit diesem Problem zusammen und ich denke, es ist durch Styling lösbar.
  3. Weil es das Standardverhalten von WinForms ist (soweit ich mich erinnere, wenn mit Winforms gearbeitet wurde), das durch Styling lösbar ist
  4. Nicht alle Plattformen haben/unterstützen StatusBar, wenn ich eine benötige, wie Sie sagten, erstelle ich ein gestapeltes Layout mit Elementen darin.
  5. Warum setzen Sie Drawable nicht einfach in ein scrollbares Layout und machen die Drawable-Steuerung so groß, wie Sie möchten?
  6. TextBoxCell hat eine Eigenschaft namens TextAlignment und VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Darauf hast du schon eine Antwort

Alle 5 Kommentare

Hey,

Ich denke, Sie sollten für jedes Ihrer Probleme separate Themen eröffnen, ich kann nur einige Ihrer Punkte beantworten.
Eto zielt nicht darauf ab, auf allen Plattformen gleich zu agieren (wie @cwensley in einigen der Styling verwenden

  1. Dies ist lösbar mit Styling
  2. Ich denke, das hängt mit diesem Problem zusammen und ich denke, es ist durch Styling lösbar.
  3. Weil es das Standardverhalten von WinForms ist (soweit ich mich erinnere, wenn mit Winforms gearbeitet wurde), das durch Styling lösbar ist
  4. Nicht alle Plattformen haben/unterstützen StatusBar, wenn ich eine benötige, wie Sie sagten, erstelle ich ein gestapeltes Layout mit Elementen darin.
  5. Warum setzen Sie Drawable nicht einfach in ein scrollbares Layout und machen die Drawable-Steuerung so groß, wie Sie möchten?
  6. TextBoxCell hat eine Eigenschaft namens TextAlignment und VerticalAlignment:
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. Darauf hast du schon eine Antwort

Es ist mir peinlich zu fragen, aber ich kann nicht lösen "Gibt es eine Möglichkeit, die Skalierung von Bildern in Schaltflächen (Schaltfläche) zu deaktivieren und warum ist sie standardmäßig aktiviert?" mit Styles wie von @SlowLogicBoy vorgeschlagen.
Die weiteste Strecke, die ich fahren konnte, ist:

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

Können Sie ein Beispiel geben, wie Sie es machen?
Vielen Dank

Ich kenne mich mit wpf nicht aus, daher kann ich Ihnen Folgendes geben:

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

Wie der Eto-Button für wpf . gemacht wird

Danke @SlowLogicBoy , dein Code ist definitiv ein guter Ausgangspunkt, um auf den Wpf-Button zuzugreifen, ich werde versuchen, weiterzumachen und herauszufinden, wie man die Skalierung selbst deaktiviert :)

Für die Aufzeichnungen erledigt das folgende Snippet die Aufgabe:

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

Danke @SlowLogicBoy für seine Hilfe

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen