Ribbon Controll in Windows Forms

    • VB.NET

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

      Ribbon Controll in Windows Forms

      Hallo Zusammen, ich weiß man sollte kein WPF und Forms Zusammen Nutzen. Aber nach langer Suche wurde ich Leider nicht fündig. Darum habe ich das wpf Ribbon in ein Form Gepackt mit einem wpf host element. nun möchte ich euch zeigen wie dies Funktioniert.

      1. Muss man ein neues wpf steuerelemnt erstellen.
      2. Nun müssen wir einen Verweis zu der System.Windows.Controls.Ribbon hinzufügen.
      3. Nun Passen wir das Fenster des wpf Controlls an, an die Größe die das Ribbon Haben soll.
      4. Wir Ziehen aus den Tools das Ribbon auf das Controll Fenster.
      5. Bei Layout wählen wir height: Auto Width: Auto Danach wählen wir das Horzintal und Vertikal Alligment auf Stretch
      so das sich Unser ribbon auf dem Kompletten Kontroll Befindet. (Bild 1)
      xaml Code meines Controlls
      Spoiler anzeigen

      XML-Quellcode

      1. <UserControl
      2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      6. xmlns:Custom="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" x:Class="UserControl1"
      7. mc:Ignorable="d" Height="136" Width="758">
      8. <Grid Margin="0,0,0,149">
      9. <Custom:Ribbon Margin="0,0,0,-139">
      10. <Custom:Ribbon.ApplicationMenu>
      11. <Custom:RibbonApplicationMenu>
      12. <Custom:RibbonApplicationSplitMenuItem Header="Neues Projeckt">
      13. <Custom:RibbonApplicationMenuItem Header="Neues JForm Projekt" Click="RibbonMenuItem_Click_1"/>
      14. </Custom:RibbonApplicationSplitMenuItem>
      15. </Custom:RibbonApplicationMenu>
      16. </Custom:Ribbon.ApplicationMenu>
      17. </Custom:Ribbon>
      18. </Grid>
      19. </UserControl>



      6. Nun Debuggen wir Das Projeckt.
      7. Jetzt Ziehen wir ein wpf-host element auf unser Windows fom.
      8. Hier wählen wir bei Child unser wpf Steuerelement. Nun haben wir es auf dem form (blild 2)
      9. Für Die Funktionen des Ribbon gehen wir in das Steuerelement, dort kann das Ribbon Frei Bestückt und
      mit den Verschiedenen Codes Programmiert werden wie bei mir

      VB.NET-Quellcode

      1. Private Sub RibbonMenuItem_Click_1(sender As Object, e As Windows.RoutedEventArgs)
      2. Form1.Text = "Hallo"
      3. End Sub


      Die XAML Codes Könnten glaub ich einfach Kopiert werden, sollte gehen. Nun hat man ein Ribbon in eienem Form,
      einfach Genial.

      :thumbsup: :thumbsup: :thumbsup: :thumbsup:

      Gruß Andy
      Bilder
      • formshost1.JPG

        227,69 kB, 1.279×986, 1.875 mal angesehen
      • formribbon.JPG

        44,34 kB, 1.028×750, 1.844 mal angesehen
      Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

      Entschuldigung wenn ich hier jetzt einfach mal so frage aber was bitte soll daran gut sein wenn man WPF in eine veraltete Winforms klatscht?
      Für mich ist das einfach nur eine schlechte Kompromisslösung für Leute die sich weiterhin WPF wiedersetzen, da sie nicht bereit sind etwas neues zu versuchen, ihren Horizont zu erweitern,... aber trotzdem die Features von WPF haben wollen.
      Tatsache ist und bleibt aber nun mal einfach, dass WPF und Winforms mischen schon fast einer Todsünde gleich kommt und ich ehrlich gesagt überhaupt nicht weiß weshalb Microsoft diese Möglichkeit überhaupt zur Verfügung stellt. WPF verfolgt nun mal zu 100% andere Konzepte wie Winforms und das dann mischen.. X(


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
      @thefiloe
      Es hat ja nichts mit wpf an sich zu tun, nur für mansche sachen nutze ich lieber WinForms, und das mit dem host element klappt echt gut.

      Ich denke es giebt viele die noch mit WinForms Arbeiten und gerne ein Ribbon dabei hätten.
      Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

      Nur weil etwas möglich ist, ist es nicht automatisch gut. Ich persönlich(und ich denke diese Meinung teilen noch viele) würde so etwas niemals jemandem empfehlen. Und dafür habe ich sehr gute Gründe.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

      Andy16823 schrieb:

      Ich denke es giebt viele die noch mit WinForms Arbeiten und gerne ein Ribbon dabei hätten.

      Dann benutzt mal wohl lieber professionellere:
      officeribbon.codeplex.com/documentation
      (codeproject.com/Articles/36427…a-WinForms-Application-Cs)
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      (mir ist klar, dass der Thread alt ist, aber für mich ist er sehr aktuell)

      Erstmal vielen Dank für die Infos zum Mischen von WinForms und WPF.
      Prima dass das geht!

      thefiloe schrieb:

      Nur weil etwas möglich ist, ist es nicht automatisch gut. Ich persönlich(und ich denke diese Meinung teilen noch viele) würde so etwas niemals jemandem empfehlen. Und dafür habe ich sehr gute Gründe.


      Nun, ich höre hier nur inhaltslose Argumente, es sei eine "Todsünde" oder es gebe "gute Gründe". Worum es sich dabei genau handeln soll, höre ich nicht.

      Es ist ganz klar, warum Microsoft das ausliefert, nämlich weil es gute Gründe gibt es zu tun.
      Nicht jeder schreibt kleinere Projekte, die man eben mal am Wochenende neu schreiben kann.
      Ich arbeite seit drei Jahren mit mehreren Entwicklern an einem Projekt, das mit Winforms begonnen wurde, da WPF-Knowhow fehlte und da viele Dinge in Winforms einfacher und besser funktionieren (zuindest als das Projekt begonnen wurde), haben wir uns für Winforms entschieden.
      250.000 zeilen Code wovon sich mind. 80.000 auf Winforms Elemente beziehen.
      Will man das auf einen Schlag umstellen ... wer bezahlt das? Und das nur um das Design ein wenig aufzupeppen?

      Also fängt man an, das Stück für Stück zu machen und WPF zunächst da einzusetzen, wo es wichtig ist.
      Ich finde es völlig legitim das zu mischen, insbesondere bei diesem Beispiel oben.

      Danke nochmal und viele Grüße


      ErfinderDesRades - Moderator - Notiz: Ich hab diese Nachfrage mal freigeschaltet, obwohl schon emotional angeheizt.
      Ich würde eine inhaltliche Diskussion sehr begrüßen, ob und wann WinForms und Wpf zu mischen eine gute Idee ist oder nicht.
      Aber ich sag gleich: bitte respektvoller Umgang, und sachlich argumentieren - "Todsünde" versus "inhaltslose Argumente" - geht beides ein bischen in eine ungute Richtung, die ich in den Tutorials nicht haben möchte.
      thx



      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

      1. Ist WPF eine komplett neue Technologie, wurde auf neues ausgelegt etc. Das heißt darin hat WinForms überhaupt nichts zu suchen.
      2. Gibt es in WPF allerhand Pattern etc., die für optimale und saubere Programmierung gedacht sind.
      3. Wenn Du darin WinForms nutzt, dann bleibe gleich bei WinForms, wieso dann WPF? Ich glaube, Du merkst selbst, dass dies Unsinn ist.

      Zu Deinen Argumenten, da muss ich Dir strikt widersprechen:
      Das Problem lag dann eher an eurer Planung. Sowas sollte man vorher wissen, ob man ein gescheites Design will oder doch lieber die leichte Bedienung ne Rolle spielt.
      Außerdem geht mit WPF alles viel besser, denn es ist neuer, schneller, performanter und alles.

      Heißt also zu sagen, "Ich habe hier sauviele Codezeilen, wie soll man das umschreiben, da muss man das so machen" kann man so nicht direkt sehen. Das Problem ist dann eher, dass Ihr bereits bei der Projektplanung dies wohl eher weniger beachtet habt und eventuell etwas zu schlecht durchdacht. (Nicht als Angriff sehen)
      Also vorher entscheiden, was man für Prioritäten hat und dann konkret und detailliert alles planen. Das ist sehr wichtig.

      Aber dann einfach hergehen und mischen, das ist Unsinn, siehe Argumente oben.
      Mal davon abgesehen, dass es hier um ein Ribbon-Control geht, was übrigens genauso gut in Windows Forms möglich ist (siehe Gather's Links). Das zu nutzen wäre dann wenigstens ne gute Lösung und anbei kriegt man noch nen relativ gutes Design damit hin.
      Das heißt, hier gäbe es erst recht keinen Grund das zu machen. ;)

      Es gibt nämlich auch für Windows Forms genug Möglichkeiten ein modernes Design zu schaffen, da reicht meist schon ein wenig Aerostyle mit modernen Farben und Schriftarten und fertig.
      Heißt: Du kannst Windows Forms nutzen und dafür auch erstellte Controls etc. einbinden und auf die GUI ziehen und verwenden und Du kannst WPF nutzen, alles schön per XAML erstellen und dafür geeignetes Zeugs verwenden. Aber nicht beides.
      WinForms ist WinForms und WPF ist WPF. Beides hat speziell angefertigte Sachen, die man jeweils dafür nutzen kann, aber beides mischen ist auf Grund der Designunterschiede, der verfolgten Ideen und Verhaltensdifferenzen, sowie auch der Art des Codens, keine gute Idee.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Trade“ ()

      Ich halte auch nicht viel von mischen.
      Der minder wichtige Punkt ist die Bläh-Ware, die entsteht, wenn man die äusserst umfangreichen Wpf-Bibliotheken einbindet.
      Aber wesentlicher ist, dass Wpf viele geniale Konzepte beinhaltet, und durchgehend darauf aufbaut, die aber nicht kompatibel mit WinForms sind: Zuallererst der MVVM-Pattern, aber auch die Styles und Templates, oder die Geschichte mittm DataContext.
      Das wird alles mit ziemlicher Sicherheit nicht oder grottenfalsch angewendet werden, wenn man versucht, ein großes WinForms-Teil stückchenweise umzubauen statt eines grundlegenden ReWrites.
      Und imo das problematischste daran: die Firma hat dadurch ihr Personal verdorben.
      Die WinForms-Entwickler, die so stückchenweise quasi eine "Wpf-Mißgeburt" geschaffen haben, denken irgendwann natürlich, sie verstünden was von Wpf - und liegen völlig falsch!
      Und können auch in Zukunft nichts als Grotten-Code produzieren - weil habens halt so gelernt, und gibt in der ganzen Firma auch kein korrigierendes Feedback.

      Also das mit den 250000 Zeilen Code ist echt blöd, da mag ein Rewrite finanziell schlicht nicht machbar sein. Vlt. könnte man einen Wpf-Profi ins Boot zu holen - quasi als Coach - nur gibts da nicht wenige "Profis" äusserst fragwürdiger Qualität - wie wolltet ihr das einschätzen, was einer kann?

      Übrigens son Ribbon-Control in eine WinForms-Anwendung einzubetten, finde ich recht unproblematisch: Da hat man zwar eine Riesen-Bibliothek zuzuladen, aber es wird kein Stil verhunzt: Es bleibt halt WinForms-Stil, und ist ja auch ok.