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 🙂
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.