如何确定依赖属性是否绑定到只读属性?

时间:2015-11-16 17:04:52

标签: wpf binding dependency-properties

我定义了一个用户控件和一个依赖属性(称为:Text)。 现在我想知道Text的绑定属性是否只读? (在后面的代码中)

我没有在BindingExpression中找到一个条目。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

例如,我们可以这样做:

// create some control
var elem = new FrameworkElement();
// create context for control
elem.DataContext = new TestClass();
// create binding
var bind = elem.SetBinding(UIElement.AllowDropProperty, "ReadOnlyBool");
// we can resolve property
var pi = bind.ResolvedSource.GetType().GetProperty(bind.ResolvedSourcePropertyName);
// and check if it writeable
var isReadOnly = pi.CanWrite;

并非每个BindingExpression都有ResolvedSource和/或ResolvedSourcePropertyName,因此,我想,这就是为什么我们没有关于已解析属性的信息的原因。

上下文:

public class TestClass : DependencyObject
{
    public static readonly DependencyPropertyKey ReadOnlyBoolProperty =
        DependencyProperty.RegisterReadOnly("ReadOnlyBool", typeof (bool), typeof (TestClass),
            new PropertyMetadata());

    public bool ReadOnlyBool => (bool) GetValue(ReadOnlyBoolProperty.DependencyProperty);
}