myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Knowledge Base (https://www.mycsharp.de/wbb2/board.php?boardid=68)
-- Artikel (https://www.mycsharp.de/wbb2/board.php?boardid=69)
--- Online Artikel über WPF Attached Properties (engl) (https://www.mycsharp.de/wbb2/thread.php?threadid=119984)


Geschrieben von CoderboyPB am 23.11.2017 um 06:52:
  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 smile


Geschrieben von Deaktiviertes Profil am 23.11.2017 um 08:52:
 
Nun ja, der Code hat teilweise kleinere Bugs, wo z.B. an einen Event nur Handler hinzugefügt, aber niemals entfernt werden.

C#-Code:
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

C#-Code:
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

C#-Code:
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.


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 21.02.2020 03:31