WPF - Ausrichtung und Größenangaben

21/03/2008 - 21:15 von Ulf Kadner | Report spam
Hallöchen!

Ich führe mich gerad ein wenig in WPF ein und stoße dabei oft auf noch
unerklàrliche Verhalten.

Folgendes beschàftigt mich jetzt bereits 2 Stunden und die Lösung ist
sicher einfach, wenn man denn weis wie :-)

<StackPanel Name="stackPanel1">
<Path Height="32" Stretch="Fill" Stroke="DarkGray"
StrokeThickness="2">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="10,0">
<LineSegment Point="200,0" />
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</StackPanel>

Mein Problem ist jetzt folgendes:

Wie sag ichs dem XAML das Point.X des LineSegment(en) und abgerundeten
Ecken (ArcSegment) von der Breite des übergeordneten StackPanel abhàngig
ist (Width - 20)

Der Path soll sich also immer an der maximal nutzbaren Breite minus 20
Pixel orinetieren da links oben und rechts oben abgerundete Kanten
gezeichnet werden sollen.

Worums mir dabei letztendlich geht ist der Entwurf eines eigenen
Formularaussehens incl. Titelzeile und notwendigen Titel-Buttons in
dynamischer Größe (Breite).

Muss ich das letzendlich doch wieder über Code realisieren oder hat da
XAML aleine das Zeug zum Design?

Dank, Frohe Ostern, Ulf
 

Lesen sie die antworten

#1 Frank Dzaebel
22/03/2008 - 09:37 | Warnen spam
Hallo Ulf,

Ich führe mich gerad ein wenig in WPF ein und stoße dabei oft auf noch
unerklàrliche Verhalten.



bevor Du alles mit ArcSegment'en zusammenbaust,
ist evtl. folgendes für Dich einfacher:

<DockPanel>
<Rectangle Stroke="DarkBlue" Height="100"
RadiusX="20" RadiusY="20" StrokeThickness="5"/>
</DockPanel>

Wenn Du unbedingt ArcSegment'e benutzen
willst/musst, hier etwa ein Beispiel für einen Bogen
(den Rest bekommst Du ja hin - und beachte, ggf.
(z.B. bei Strech="Fill") neu zu übersetzen) :

<StackPanel Name="stackPanel1" Height="100">
<Path Height="32" Stroke="DarkBlue"
Stretch="Fill" StrokeThickness="2">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="10,10">
<LineSegment Point="200,10" />
<ArcSegment Point="220,30"
SweepDirection="Clockwise"
Size="20,20" />
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</StackPanel>

Oder halt in Kurzform, noch etwas erweitert:

<StackPanel Name="stackPanel1" >
<Path Data="M 10,10 L 200,10 A 20,20 0 0 1 220 30 L 220,50
A 20,20 0 0 1 200,70 L 10,70" Stretch="Fill"
Stroke="DarkBlue" StrokeThickness="3"/>
</StackPanel>

Nette Beispiele, siehe auch:

[Beispiele zu Geometrie]
http://msdn2.microsoft.com/de-de/li...71505.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen