C# WPF User Control Typname nicht vorhanden?

1 Antwort

Das Problem ist dein Klassen-Name, der ist identisch zum Namespace-Namen. Gib dem Control einen anderen Namen, dann gehts.

Ich persönlich nenne das meist "Control" oder ein "View", denn streng genommen ist das ja nicht die MenuBar selber, sondern nur das Control, mit dem ich dann mehrere MenuBars erstellen kann.

Ach und was Du da hast, ist kein "Custom Control", sondern ein "User Control", wichtiger Unterschied.

=======================

Außerdem hast Du noch ein paar andere Probleme mit dem Code.

WPF arbeitet mit DependencyProperty, die solltest Du dir dringend angucken. Du hast im CodeBehind aber public Properties, das ist ganz falsch, das müssen DependencyProperties sein, sonst kannst Du dafür keine Bindings definieren.

Dann sind diese Properties schon so oder so ähnlich vorhanden. Doppelte Properties sind auch immer eine blöde Idee.

Außerdem sollte ein Control keinen Konstruktor-Parameter haben, sonst kannst Du es nicht ohne Weiteres im XAML definieren.

Und deine merkwürdige String-Liste namens "Buttons" - damit kriegst Du 1. nur ein eindimensionales Menü hin und 2. sind Strings sehr stark eingeschränkt, Du kannst praktisch nichts an Funktionen erweitern.

Der erste Gedanke, wie ich das machen würde, wären zwei ViewModels, eins (oder mehrere mit Basisklasse) für das Menü selber und eins für die einzelnen Menü-Punkte. Letzteres kann sich selber enthalten, um tiefere Menüs zu ermöglichen.
Die View dazu stellt das dann nur noch dar, mit klugen Bindings geht das alles und dann bleibt auch dein CodeBehind völlig leer.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler
ProgrammerXXX 
Fragesteller
 03.04.2020, 23:57

Danke sehr, der Build hat jetzt schon einmal geklappt!
Das ist das erste Mal, dass ich eine User Control selbst erstelle und ich danke dir für deine Tipps und Vorschläge! Ich schaue mal, was ich davon umsetzen kann. Danke!

0
Palladin007  03.04.2020, 23:58
@ProgrammerXXX

Schau dir auf jeden Fall MVVM an.

WPF kann man zwar ohne MVVM nutzen, aber verschenkt dabei viel Potential und wird auf Dauer nicht Glücklich damit.

0