2015-07-28 45 views
1

我试图在一个面板内制作一个标题形状,这又是一个节点内部。 我的代码,远远看上去像:GoJS没有拉伸形状以适合父母

var _ = go.GraphObject.make; 
var template = 
_(go.Node, "Spot",{ 
    minSize: new go.Size(150, NaN) 
    } 
    _(go.Panel, go.Panel.Auto, 
     _(go.Shape, { 
        figure: "Rectangle", 
        fill: "#ff00ff", 
        stroke: "#000000", 
        strokeWidth: 1,     
        alignment: new go.Spot(0.5, 0) //aligning it center 
      } 
     ) 
    ) 
); 

,如果我想只要我想舒展元素我想补充

stretch: go.GraphObject.Fill 

或者(如果水平)

stretch: go.GraphObject.Horizontal 

但形状不是而是水平伸展。

什么我自己也尝试到现在为止:

  • 添加defaultStretch到面板
  • 添加defaultStretch到节点和面板
  • 更改面板布局(或定位,如果你想这样)
  • 更改节点布局(或定位)
  • 在三个组件的每一个上设置两个维度的minSize或maxSize

我在Gojs网站上研究过它,但只能找到上面提到的东西。

谢谢你帮我

PS:如果需要任何额外的信息,我会很乐意提供它

回答

2

在大多数情况下,小组应在它有一个以上的元素。在你的代码中你实际上有两个面板,每个面板只有一个元素。而且你的代码不显示任何文本(没有TextBlock),所以它不能作为标题。

你还没有说过你想要拉伸哪个元素。设置GraphObject.stretch是正确的。但有时您需要将其设置在面板上,以确保面板被拉伸以允许拉伸面板内部的东西。

Panel.defaultStretch只是在面板的每个元素上设置GraphObject.stretch的默认值的一种方法。

我的猜测是,如果你想让一个Shape被拉伸以适应另一个对象(可能是一个TextBlock),你想使用一个“自动”面板。这是您在最小样本以及许多其他样本中默认显示的内容。

如果添加: {minSize属性:新go.Size(150,NAN)}, 到最小样本中的节点模板,你会看到: Minimal sample with minSize Nodes

这就是你正在寻找对于?如果没有,请添加你想要的草图。

+0

谢谢您的回复。与此同时,我自己修复了这个问题,主要是在你的回答中做了什么。但是有一件事需要做,那就是拉伸可以发挥作用:设置东西的宽度。在我的情况下,我有一个节点与两个面板(一个用于形状,一个用于文本)。我总是定义一些类似stretch的东西:fill或Text.wrapfit,但是我从来没有说过如果实际上没有内容,该怎么办。 minSize:在这里没有工作。我必须设置minSize,再加上我必须在节点上设置所需的**宽度**,然后一切正常。 – 1D0BE

+0

是的,如果你想要文本包装允许的宽度必须是有限的。你可以通过设置宽度(a.k.a.desiredSize.width),设置maxSize.width,或通过面板限制其实际宽度来实现。如果将宽度设置为实数,则不需要设置minSize或maxSize。 http://gojs.net/latest/intro/sizing.html –

+0

那么,这里的问题是,即使我设置了minSize(面板,或节点,或两者),拉伸将不起作用,因为没有所需的宽度组。所以现在我有这样的代码:minSize:new go.Size(150,NaN),width:150.在我的情况下,宽度被覆盖很频繁,因为我使用长标题确定尺寸(在我的情况) – 1D0BE