1

についての公式のMSDNドキュメントを見てきましたが、この質問DependencyProperty.RegisterAttachedによって示唆されたこの必要な命名規則を示していないようです

私はコードが次のようなものでなければならないことを知っています:

public static readonly DependencyProperty HandleKeyPressEventProperty =
    DependencyProperty.RegisterAttached("HandleKeyPressEvent",
                                        typeof(bool),
                                        typeof(MyDataGrid),
                                        new UIPropertyMetadata(true));
public static bool GetHandleKeyPressEvent(DependencyObject obj)
{
    return (bool)obj.GetValue(HandleKeyPressEventProperty);
}
public static void SetHandleKeyPressEvent(DependencyObject obj, bool value)
{
    obj.SetValue(HandleKeyPressEventProperty, value);
}

この場合、その名前を保持するために Get および Set メソッドが必要ですか? 添付プロパティは「Property」で終わる必要がありますか? また、代わりに次のようなコードを作成できますか。

public static readonly DependencyProperty HandleKeyPressEventProperty =
    DependencyProperty.RegisterAttached("FooEvent", //change registered name
                                        typeof(bool),
                                        typeof(MyDataGrid),
                                        new UIPropertyMetadata(true));
public static bool GetHandleKeyPressEvent(DependencyObject obj)
{
    return (bool)obj.GetValue(HandleKeyPressEventProperty);
}
public static void SetHandleKeyPressEvent(DependencyObject obj, bool value)
{
    obj.SetValue(HandleKeyPressEventProperty, value);
}

誰でもこの「魔法の」命名スキームと、私が従わなければならない標準の種類を解決できますか?

4

1 に答える 1

0

そこにあるすべてが必要かどうかはわかりませんが、それは私が使用している形式でもあり、どこでも見られるものだと思います. そこに何かを変更すると、たとえそれがまだ機能していても、混沌と無秩序が発生します! :)

これは、改訂されたDr. WPF のスニペットに基づく、私のコード スニペットのバージョンです。

#region IsDirty
/// <summary>
/// IsDirty Attached Dependency Property
/// </summary>
public static readonly DependencyProperty IsDirtyProperty =
    DependencyProperty.RegisterAttached(
        "IsDirty",
        typeof(bool),
        typeof(AnimationHelper),
        new PropertyMetadata(false, OnIsDirtyChanged));

/// <summary>
/// Gets the IsDirty property. This dependency property 
/// indicates blah blah blah.
/// </summary>
public static bool GetIsDirty(DependencyObject d)
{
    return (bool)d.GetValue(IsDirtyProperty);
}

/// <summary>
/// Sets the IsDirty property. This dependency property 
/// indicates blah blah blah.
/// </summary>
public static void SetIsDirty(DependencyObject d, bool value)
{
    d.SetValue(IsDirtyProperty, value);
}

/// <summary>
/// Handles changes to the IsDirty property.
/// </summary>
/// <param name="d">
/// The <see cref="DependencyObject"/> on which
/// the property has changed value.
/// </param>
/// <param name="e">
/// Event data that is issued by any event that
/// tracks changes to the effective value of this property.
/// </param>
private static void OnIsDirtyChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    bool oldIsDirty = (bool)e.OldValue;
    bool newIsDirty = (bool)d.GetValue(IsDirtyProperty);
}
#endregion
于 2012-12-28T09:57:08.017 に答える