2009-03-19 9 views
2

Ich habe einen Rahmen in einem Canvas. Die Höhe und Breite der Border variieren je nach Inhalt. Ich möchte, dass sich der Rahmen ausdehnt, um den gesamten Canvas zu füllen. Wie kann ich das machen?WPF - So docken Sie einen Rahmen an einen Canvas an?

Ich habe dies ohne Erfolg an der Grenze versucht:

Height="{Binding ElementName=MainCanvas, Path=Height}" 
Width="{Binding ElementName=MainCanvas, Path=Width}" 
+1

Warum legen Sie nicht einfach den Canvas in den Rahmen? Dann müssten Sie nicht einmal extra binden. –

Antwort

8

Hat die Leinwand eine explizite Höhe/Breite hat? Es kann sein, automatische Größe und haben eine Höhe/Breite von double.NaN.

Versuchen Sie, das Kind Höhe/Breite an die Actual und Actual der Leinwandbindung wie so:

Height="{Binding ElementName=MainCanvas, Path=ActualHeight}" 
Width="{Binding ElementName=MainCanvas, Path=ActualWidth}" 

Canvas Panels nie zu ihrer Größe Kinder Größe relativ sagen, auch wenn die Kinder zu HorizontalAlignment.Stretch gesetzt (oder vertikal). So verbindlich ist hier eine gute Lösung.

+0

Vielen Dank Josh! Ich brauchte ActualHeight/ActualWidth im Gegensatz zu Height/Width. –