2010-12-22 7 views
2

Was ich (ich weiß wirklich nicht, ob es möglich ist) tun wollen, ist die Höhe einer bestimmten Zeile nach seinem Inhalt zu setzen:ein Gitter RowDefinition Höhe in Grid nach seinem Inhalt in Silverlight Einstellung

< Grid.RowDefinitions> < RowDefinition Height = "{Binding Elementname = aaa, Path = Höhe" /> < RowDefinition Height = "*" /> < /Grid.RowDefinitions>

Angenommen, aaa wird in die Zeile des Rasters eingefügt.

Bitte beachten Sie: Ich möchte, dass meine Zeile die Höhe ganz am Anfang behält.

Ist das überhaupt möglich?

Prost!

Antwort

2
<RowDefinition Height="Auto" /> 

sollte tun, was Sie wollen.

EDIT

Was könnten Sie tun, ist ein Handler, um Ihre Inhalte des Sizechanged-Ereignis hinzuzufügen. In diesem Handler, legen Sie die entsprechenden RowDefinition Höhe des Gitters auf die Actual des Inhalts und entfernen Sie den Handler:

grid.RowDefinitions[x].Height = new GridLength(((FrameworkElement)sender).ActualHeight, GridUnitType.Pixel); 
content.SizeChanged -= content_SizeChanged; 

ich es nicht getestet, aber es sollte Ihnen einen guten Start geben. EDIT getestet, es funktioniert. Vielleicht gibt es einen besseren Weg, aber das ist ein Weg.

+0

Leider könnte meine Steuerung ihre Höhe ändern (sie könnte erweitert werden). Wie auch immer, ich möchte, dass die Rasterzeilenhöhe so bleibt, wie sie am Anfang gesetzt wurde, daher ist Auto keine gute Option (die Zeile würde in der Größe verändert werden). – Jamie

+0

Ja, mit diesen Voraussetzungen wird meine Antwort die Arbeit nicht erledigen. Ich schlage vor, dass Sie Ihre Frage bearbeiten, um die Notwendigkeit zu berücksichtigen, dass die Reihe ihre ursprüngliche Höhe behält, sollte sich die Höhe des Inhalts ändern, war es für mich nicht klar :) – sowee15

+0

tricky, ich mag es :-) – Jamie