Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Controls in UserControl "schachteln"
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

Controls in UserControl "schachteln"

beantworten | zitieren | melden

Hallo zusammen,

ich habe ein UserControl erstellt und dort habe ich einen Bereich (Grid) und in dieses Grid möchte ich gerne, im Designer vom Studio, andere Controls "Stecken/Schachteln" können.

Derzeit kann ich sie dort nicht hineinstecken.

Hat jemand eine Ahnung wie das geht, muss ich da eine Property am UserControl/Grid setzen die ich noch nicht kenne?

Danke im Vorraus.
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Hallo Floschi,

normal geht das über die Toolbox. Drag&Drop.
Oder du schreibst selbst XAML Code.
Und nein, du musst keine Property setzen. Es sei denn du meinst Grid.Column und Grid.Row um das Element falls mehrere Spalten und Reihen sind zu positionieren.

Gruß,
Michael
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Ich hab im User Control einen Bereich der ein Grid enthält, und im Designer vom Studio geht halt kein Drag&Drop :-(
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

ungefähr jedes stück Xaml, was du im INet findest, hat ein Grid mit Kram drauf. gugge zB 4ViewsWpf
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Hallo,

ich habe mal zum besseren Verständnis ein Bild angefügt.

Das rote soll das UserControl sein, sobald ich jedoch ein weiteres Control, in diesem Fall ein Button, im Designer dahineinziehen will, erkennt dieses neue Control(Button) nicht das UserControl als Parent sondern immer nur das dahinterliegenden.
Attachments
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1.688

beantworten | zitieren | melden

Hallo,

was ist das denn für ein "UserControl"?
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Das ist ein normales WPF- UserControl, nur mal rot eingefärbt.

Darin liegt nur ein Grid welches auch als public Property erreichbar ist.
Per Code kann ich da auch andere Controls einhängen,
ich will das aber nicht per Code machen sondern per Designer und Drag&Drop.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Floschi am .
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

man kann Controls nur in solche Controls einschachteln, die von Panel erben. Etwa Grid, Canvas, StackPanel, DockPanel, etc.

Es gibt annere Elemente, wo man genau 1 ChildElement hineintun kann, zB PopUps, oder auch alles, was von Decorator erbt, wie Border.

Aber UserControl ist halt für was anneres vorgesehen, nämlich zum beerben, udn dann kann man alle möglichen Controls da hineinkomponieren, und das Ergebnis bildet eine abgeschlossene, eigenständige Einheit.

Vielleicht könnte man etwas coden, dass sich das ucl wie ein Panel verhält, aber ich weiß nicht, wie das geht.

Am ehesten möglich scheint mir, von Grid, DockPanel oder StackPanel zu erben - dann wird sich dein Produkt ja auch ebenso verhalten wie ein Grid, DockPanel oder StackPanel.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1.688

beantworten | zitieren | melden

Zitat von Floschi
ich will das aber nicht per Code machen sondern per Designer und Drag&Drop.

Dann musst Du das UserControl selbst editieren. Das ist sonst vom Designer her unveränderlich. Woher soll der Designer schließlich wissen, dass Du Controls in ein darin liegendes Grid einfügen willst?
Würdest Du nicht ein UserControl nehmen, sondern bspw. ein Grid (und von diesem ableiten), dann funktioniert's wahrscheinlich.
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Hast du es so in etwa:

<Window x:Klass="DeinWindow">
    <DeinUserControl/>
</Window>

<UserControl x:Klass="DeinUserControl">
    <!--CONTENT-->
</UserControl >

Dann ist es klar dass du in DeinWindow ins DeinUserControl (wessen Inhalt nicht dort definiert ist) nichts mehr reinschieben kannst. Das musst du dann schon in der XAML machen, in der du DeinUserControl definiert.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Ja aber selbst wenn ich es umbaue und von Grid ableite,

dann nimmt der Designer von VS immer die äußern Ränder der neu erstellten "Controls", um die Controls die ich per Drag&Drop hineinziehen, per margin "anzudocken"
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Das ist weil dein "Control" immer als Ganzes gesehen wird. Dadurch ist es VS egal, ob du 100 controls in deinem Control hast oder nicht, er wird dir immer an die Grenzen des gesamten andocken.

Du kannst auch kein Icon in einen Button schieben.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Also geht es nur per XAML ?
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

beantworten | zitieren | melden

Ich denke wir reden einander vorbei.

Sieh DeinControl als geschlossene Box. Der kannst du nichts mehr mit Drag&Drop hinzufügen).

Jedoch kannst du DeinControl etwas hinzufügen, wenn du diese Box öffnest. Dies machst du indem du dessen XAML öffnest und dort jene Element hinzufügst welche du möchstest.

Aber du kannst nicht in DeinWindow welche die geschlossene "Box" DeinControl beinhaltet dort etwas hineingeben. Ein UserControl ist eben, wie ErfinderDesRades bereits gesagt hat eine geschlossene Einheit, die eigentlich nur zum Benutzen und nicht Designen (wie die Controls) vorgesehen ist.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Hi Floschi,

schau dir doch einfach mal an, wie es bei einem Grid funktioniert, dass man Elemente hinzufuegen kann, und diese im Grid-Layout positioniert. Dazu werden z.B. Attached Propertys verwendet, also Grid.Column und Grid.Row. Wenn du so etwas implementierst, funktioniert es auch mit deinem selbstgeschriebenen Steuerelement.

Christian
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Floschi
myCSharp.de - Member

Avatar #avatar-2723.png


Dabei seit:
Beiträge: 193

Themenstarter:

beantworten | zitieren | melden

Hab mir jetzt ein Control von HeaderedContentControl abgeleitet.

Damit funktioniert es jetzt wie gewünscht
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Dijkstra
private Nachricht | Beiträge des Benutzers