Feedback

C# - Helfer für WPF Templates per Quellcode

Veröffentlicht von am 19.06.2014
(0 Bewertungen)
Wandelt ein DependencyObject in ein Element zum Hinzufügen in ein Template, das per Code behind erzeugt wird.

Es übersetzt die gesetzten Properties und Bindungen entsprechend.

Anwendung wie folgt:

// _child1Border, _child2Border sind FrameworkElementFactory-Elemente und dienen nur als Beispiel.

var _gridEnd = gridEnd.AsTemplateElement(null);
_gridEnd.AppendChild(_child1Border);
_gridEnd.AppendChild(_child2Border);

// Geben Sie die Bindings Properties und die Properties an, die behandelt werden sollen.

var _end = end.AsTemplateElement(null,
FrameworkElement.MarginProperty,
Border.BorderBrushProperty,
Border.BorderThicknessProperty,
Border.CornerRadiusProperty,
Border.PaddingProperty);
_end.AppendChild(_gridEnd);

owner.Template = ControlTemplate(typeof(GroupBox))
{
VisualTree = _end
};
GFU-Schulungen  [Anzeige]

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

public static FrameworkElementFactory AsTemplateElement<T>(this T source, ICollection<DependencyProperty> bindings, params DependencyProperty[] changedProperties)
where T : DependencyObject
{
	var result = new FrameworkElementFactory(typeof(T));

	// Die Initialisierungswerte des Objekts.
	foreach (var changedProperty in changedProperties)
	{
		result.SetValue(changedProperty, source.GetValue(changedProperty));
	}

	if (bindings != null)
	{
	    // Abschreiben der Bindungsdefinitionen.
		// Hinweis: Erfordert, dass die Bindung am "source"-Objekt an
		// der gleichen DependencyProperty gebunden ist (definiert).
		foreach (var dp in bindings)
		{
			result.SetBinding(dp, BindingOperations.GetBinding(source, dp));
		}
	}

	return result;
}
Abgelegt unter WPF, C#, Template, DataTemplate, Umwandeln, Helfer, Helper.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!