C# WPF布尔依赖属性C

C# WPF布尔依赖属性C,c#,wpf,C#,Wpf,如何创建一个简单的bool依赖属性IsInput。只有在代码中创建类时,才能将该值设置为true或false。看起来很简单,但我在网上到处搜索,还没有找到一个明确的例子 我在网上看到过这样的例子,但我不太清楚我要复制什么才能正确创建自己的bool依赖属性 public static readonly DependencyProperty AncestorProperty = DependencyProperty.Register("Ancestor", typeof(FrameworkE

如何创建一个简单的bool依赖属性IsInput。只有在代码中创建类时,才能将该值设置为true或false。看起来很简单,但我在网上到处搜索,还没有找到一个明确的例子

我在网上看到过这样的例子,但我不太清楚我要复制什么才能正确创建自己的bool依赖属性

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();
}

Register方法的第二个参数是属性的类型,即bool,而第三个参数是所谓的所有者类型,即在下面的示例中声明属性MyControl的类型

对于完整的依赖项属性声明,还需要使用调用依赖项属性的GetValue和SetValue方法的getter和setter来声明包装器属性

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
}

只需阅读文档就可以了,不确定应该出什么问题。请解释一下好吗?请阅读:ownerType:注册依赖属性的所有者类型。请看,使用实际的所有者类型而不是其他类几乎总是正确的。@Lukazoid实际上,使用任何其他类型都是不正确的。此外,没有理由这样做。如果声明的属性与应用该属性的类型不同,请使用附加属性。@Clemens如果是这样,我将使用附加属性。我认为我的链接上被接受和投票的答案是正确的,只是我从未使用过的东西。