Laden...

Online Artikel über WPF Attached Properties (engl)

Erstellt von CoderboyPB vor 6 Jahren Letzter Beitrag vor 6 Jahren 9.707 Views
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 6 Jahren
Online Artikel über WPF Attached Properties (engl)

Hallo liebe Community,

Ich habe gestern folgenden sehr guten Artikel über Attached Properties und ihre Anwendungen gefunden, den ich euch nicht vorenthalten möchte

XAML Magic: Attached Properties

Viel Spaß damit 🙂

D
985 Beiträge seit 2014
vor 6 Jahren

Nun ja, der Code hat teilweise kleinere Bugs, wo z.B. an einen Event nur Handler hinzugefügt, aber niemals entfernt werden.


private static void SelectOnEntryChanged(
    DependencyObject d,
    DependencyPropertyChangedEventArgs args)
{
    if (!(bool) args.NewValue) return;
    var text = d as TextBox;
    if (text == null) return;
    text.GotFocus += (s, e) =>
    {
        text.SelectionStart = 0;
        text.SelectionLength = text.Text.Length;
    };
}

Ist in dem Beispiel eher unwahrscheinlich, dass sich der einmal eingestellte Wert wieder ändern wird, aber sauber implementiert ist eben anders.

Und es fehlt der Hinweis, wie man z.B. diese AttachedProperty nur für bestimmte Klassen und deren Nachkommen zulässt.

Die vorgestellte RowHeights Property macht ja nur Sinn für ein Grid, dann ist es ja besser, wenn diese AttachedProperty auch nur bei Grids (und Nachfolgende) möglich ist.

Dazu schreibt man statt


public static string GetRowHeights(DependencyObject obj)
{
    return (string)obj.GetValue(RowHeightsProperty);
}
      
public static void SetRowHeights(DependencyObject obj, string value)
{
    obj.SetValue(RowHeightsProperty, value);
}

ganz simpel


public static string GetRowHeights(Grid obj)
{
    return (string)obj.GetValue(RowHeightsProperty);
}
      
public static void SetRowHeights(Grid obj, string value)
{
    obj.SetValue(RowHeightsProperty, value);
}

und fertig.

Weil das so einfach ist fehlt mir dieser Hinweis im Artikel.