2009-02-26 10 views
0

Ich habe eine benutzerdefinierte Leinwand, die ich Steuerelemente auf, verschieben und Größe ändern kann. Ich muss in der Lage sein, zumindest mit einer vorher festgelegten Größe zu beginnen, dann aber die Größe zu ändern.WPF - UserControl Sizing auf benutzerdefinierten Canvas

Mein Problem ist, dass ich ein Benutzersteuerelement habe, scheint nicht zu skalieren. Ich setze Höhe und Breite auf dem Benutzersteuerelement (funktioniert auf Drop). Wenn die Größe des Steuerelements jedoch auf der Arbeitsfläche geändert wird, bleibt die visuelle Größe gleich (die Größe wird geändert). Ich kann die Height-Eigenschaft ändern (usercontrol.height), wenn die Größe des Steuerelements geändert wird. Aber auch hier bleibt das Aussehen des Steuerelements gleich groß.

Ich hatte gedacht, dass der innere Container auf dem Benutzersteuerelement an usercontrol.height gebunden sein sollte, aber das schien nicht zu helfen. (oder vielleicht hatte ich nicht das bindende Recht).

Auf der gleichen Leinwand, wenn das verworfene Steuerelement zum Beispiel ein Image-Steuerelement ist, kann ich eine explizite Höhe auf den Tropfen setzen und alles ändert sich wie es sollte. Es scheint also UserControl-Sache zu sein.

Also gibt es etwas Besonderes, was ich mit UserControls tun muss, um die Größe der Visuals zu ändern? Soll ich explizite Höhe und Breite verwenden, um alles in Gang zu bringen?

Danke für jede Hilfe.

Antwort

2

Das WPF-Layoutsystem kann, wie Sie herausgefunden haben, verwirrend sein. Ein solides Verständnis des Layout- und Messsystems kann nicht ersetzt werden. Wenn Sie viel WPF-Entwicklung planen, sollten Sie sich 20 Minuten Zeit nehmen, um this article on the layout system zu lesen und dann eine Weile in einer iterativen Umgebung wie Kaxaml zu experimentieren, bis Sie sich wohl fühlen.

Das System ist sehr logisch. Es wird nicht lange dauern, bis der Penny fällt. Sorry für die indirekte Antwort, aber ich glaube nicht, dass es genug Informationen in deiner Frage gibt, um wirklich zu erklären, was vor sich geht. Sie können sich auch die Eigenschaften HorizontalAlignment und VerticalAlignment ansehen.

0

Kein WPF-Experte, aber ich glaube, dass Sie die automatische Größenanpassung aktivieren müssen, um das gewünschte Szenario zu erreichen. Dies geschieht, indem die Höhe/Breite eines Steuerelements auf Double.NaN gesetzt wird, was im Wesentlichen lautet: "Ich habe keine spezifische Größe". Sobald Sie das tun, sollte das Steuerelement die Größe ändern, um verfügbaren Speicherplatz basierend auf der Notwendigkeit des Steuerelements zu belegen.