The MeasureOverride method of the HoneycombPanel
private static readonly double COS_30_DEGREE = 0.866;
protected override Size MeasureOverride(Size availableSize)
{
foreach (UIElement child in Children)
{
var tile = child as FrameworkElement;
tile.Height = this.ItemLenght;
tile.Width = (COS_30_DEGREE * this.ItemLenght / 2) * 2;
tile.Measure(availableSize);
}
return base.MeasureOverride(availableSize);
}