Hallo!
Ich portiere mein Programm auf das Eto-Framework und beim Portieren und Debuggen der Schnittstelle habe ich folgende Fragen:
Gibt es eine Möglichkeit, die Skalierung von Bildern in Schaltflächen (Button) zu deaktivieren und warum ist sie standardmäßig aktiviert?
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)?
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.
Warum gibt es überhaupt keine Statusleisten und welche Möglichkeiten gibt es, diese zu ersetzen, wenn sie wirklich benötigt werden (Panel + Labels?).
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?
Gibt es eine Möglichkeit, die Ausrichtung der Werte in den GridView-Spalten festzulegen?
Wie erhalte ich das aktuell aktive Anwendungsfenster (wenn es mehrere gleichberechtigte SDI-Dokumentenfenster gibt)?
Planen Sie, in Zukunft eine Engine wie NUnitForms zu entwickeln, um UI-Anwendungen zu testen?
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?
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
C#
new GridColumn()
{
HeaderText = header,
DataCell = new TextBoxCell()
{
Binding = binding,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
},
};
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;
}
}
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
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
C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };