2009-06-10 9 views
6

Ich habe eine Artikelsteuerung mit einem benutzerdefinierten Panel in einem Benutzersteuerelement. Die Größe des Benutzersteuerelements wird nur durch die Größe des übergeordneten Fensters eingeschränkt.WPF - Rahmen um ein itemscontrol

Ich möchte jetzt die Grenze nur um das resultierende Panel gezeichnet werden. Aber stattdessen ist es um das gesamte Gitter oder wahrscheinlich genauer in der gleichen Größe wie das Gitter gezogen.

Ich glaube, ich habe die MeasureOverride richtig auf meinem HexagonalPanel implementiert, es gibt die richtige Größe zurück, also sollte es nicht die Grenze bei dieser Größe zeichnen?

Was fehlt mir?

Dank

Antwort

5

Sie haben keine Größe für ItemsControl festgelegt, daher wird die Größe auch für die übergeordneten Elemente festgelegt. Versuchen Sie, die HorizontalAlignments und VerticalAlignment von ItemsControl auf Center zu setzen; Dadurch wird die tatsächliche Größe des ItemsControl mit der des Inhalts übereinstimmen.

+0

Dank für mich gearbeitet es funktionierte ich habe noch zu lernen! viel über WPF Layout-System – eric

+0

Ich höre dich.Es dauert etwas gewöhnungsbedürftig. –

2

Items selbst BorderBrush und BorderThickness Eigenschaften hat. Wahrscheinlich möchten Sie diese verwenden, da ItemsControl standardmäßig einen Rahmen in seiner ControlTemplate hat.

+0

nee leider seine das gleiche Ergebnis :-( – eric

+0

Danke, das –

0

Sie diese achive können, Berechnung und neue Größenwert Aktualisierung:

public class MyPanel : Panel{ 
protected override Size ArrangeOverride(Size finalSize){ 

// calculate new size 
........ 

this.SetValue(WidthProperty, totalwidth); 
    this.SetValue(HeightProperty, totalheight); 

return new Size(totalwidth, totalheight); 
} 
} 
Verwandte Themen