JokerMartini
JokerMartini

Reputation: 6147

WPF bool dependency property C#

How can I create a simple bool dependency property IsInput. This value can only be set to true or false when the class is created in code. Seems rather simple but ive searched around online and haven't found a clear example.

I've seen examples like this one below online but I'm not quite clear on what I would duplicate to create my own bool dependency property correctly.

public static readonly DependencyProperty AncestorProperty =
    DependencyProperty.Register("Ancestor", typeof(FrameworkElement), typeof(MyItem),
        new FrameworkPropertyMetadata(Ancestor_PropertyChanged));

/// <summary>
/// Event raised when 'Ancestor' property has changed.
/// </summary>
private static void Ancestor_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    MyItem c = (MyItem)d;
    c.UpdateHotspot();
}

Upvotes: 2

Views: 5659

Answers (1)

Flat Eric
Flat Eric

Reputation: 8111

The second parameter of the Register method is the type of the property, i.e. bool, while the third parameter is the so-called owner type, which is the type that declares the property (MyControl in the example below).

For a complete dependency property declaration you also need to declare the "wrapper" property with a getter and a setter that call the dependency property's GetValue and SetValue methods.

public static readonly DependencyProperty IsInputProperty =
    DependencyProperty.Register("IsInput", typeof(bool), typeof(MyControl),
        new FrameworkPropertyMetadata(IsInputPropertyChanged));

/// <summary>
/// CLR wrapper for the 'IsInput' dependency property.
/// </summary>
public bool IsInput
{
    get { return (bool)GetValue(IsInputProperty); }
    set { SetValue(IsInputProperty, value); }
}

/// <summary>
/// Callback called when 'IsInput' property has changed.
/// </summary>
private static void IsInputPropertyChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    bool b = (bool)e.NewValue;
    //TODO
}

Upvotes: 4

Related Questions