Frage

Ich füge dynamisch benutzerdefinierte Steuerelemente in Silverlight 2, aber sie sind nicht sichtbar. Doch auf die visuelle Struktur in Silverlight Spy Prüfung Ich nehme zur Kenntnis, dass ihre Sichtbarkeit Eigenschaft Visible ist und es zu Komprimiert und zurück zu Visible Ursachen Makeln die Kontrollen sichtbar werden.

Was könnte ich falsch gemacht? Alle Ideen, was ich suchen soll dieses Problem zu beheben?

War es hilfreich?

Lösung 3

Ich habe in der Lage, das Problem zu lösen, das auftrat, wenn ich dynamisch Zeitperioden zu einer Zeitleiste hinzugefügt wurde.

Die Kontrollen Ich bin dynamisch hinzugefügt, auf eine Leinwand, die folgende Struktur aufweist.

<Path x:Name="ribbonItem" Fill="Green">
  <Path.Data>
    <GeometryGroup>
      <RectangleGeometry x:Name="ribbonItemBackground" />
    </GeometryGroup>
  </Path.Data>
</Path>

Die Abmessungen des RectangleGeometry hängen von drei Eingängen, die Datums- und Zeitbereiche der Zeitleiste und Timeline-Position (was ich hinzufüge) und die Abmessungen der Stange (Leinwand).

Die folgende Methode wird aufgerufen, wenn eine der BarRange, ItemRange oder BarSize Eigenschaften des Objekts eingestellt.

private void Resize()
{
if (_itemRange != null && _barRange != null && _barSize != Size.Empty)
  {
    ribbonItemBackground.Rect = ItemRectangle();
  }
}

Dies verursachte die Zeichnung Problem in meiner Frage erwähnt und die Lösung hinzufügen

ribbonItem.InvalidateMeasure();

unmittelbar nach ribbonItemBackground.Rect Einstellung.

Andere Tipps

UpdateLayout () auf der Parent shoudn't erforderlich.

Aber vergessen Sie nicht my_parent_control.Add (UIElement mynewcontrol);

d. my_parent_control könnte ein Stapel Platte sein.

Haben Sie versucht, ruft UpdateLayout () auf der Steuerung Sie hinzufügen, sie zu?

Das erste, was in den Sinn kommt, ist, welche Art von Container-Objekt werden Sie die dynamischen Steuerelemente erstellen verwenden, wenn überhaupt?

Ich konnte sehen, wie vielleicht Kontrollen ohne einen Container Hinzufügen könnte man einige Probleme geben. Ich kann nicht sagen, dass ich dynamisch viele Steuerobjekte erstellt habe, aber ich würde denken, Ihre Einzelteile zu einem Stapel-Panel hinzugefügt würde die einfachste Implementierung sein.

Ein guter Testfall könnte sein, ein Raster zu erstellen und Gitterplätze für Ihr Steuerelemente zuweisen, wie Sie sie erstellen.

Hier ist ein verknüpfen , wie genau das zu tun diese.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top