c# - 如何获得依赖属性的默认绑定(bind)模式?

标签 c# wpf data-binding dependency-properties binding-mode

我想以编程方式找出属性的默认绑定(bind)模式。

例如,如果我根据 TextBox.TextProperty 检查它,它应该是 BindingMode.TwoWay,但如果它是 ItemsControl.ItemsSourceProperty 它应该是 BindingMode.OneWay

我实现了一个自定义 MarkupExtension,到目前为止我的代码已经做到了这一点:

public override object ProvideValue(IServiceProvider provider)
{
    var service = provider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

    if (service != null)
    {
        var target = service.TargetObject as DependencyObject;
        var property = service.TargetProperty as DependencyProperty;

        // Not sure what to do with the target and propery here...
    }
}

最佳答案

使用DependencyProperty.GetMetadataDependencyObject 上。这将为您提供一个 PropertyMetadata 值,该值通常是 FrameworkPropertyMetadata 的一个实例。如果可能,转换为该类型并检查 BindsTwoWayByDefault 的值.

例如:

var metadata = property.GetMetadata(target) as FrameworkPropertyMetadata;
if (metadata != null)
{
    var isTwoWay = metadata.BindsTwoWayByDefault;
}

关于c# - 如何获得依赖属性的默认绑定(bind)模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504950/

相关文章:

javascript - Angular float 向下小数

data-binding - 数据绑定(bind)是个坏主意吗?

c# - UWP/C#-如何判断当前正在显示哪种类型的ViewModel

c# - 从页面获取窗口

C# WPF mysql 字符串

c# - UWP x :bind two-way binding

c# - 从 List<t> 中获取具有特定属性最大值的记录

c# - 将对象转换为正确的类型

c# - UserControl 中的 Window.Resources 样式 "could not be resolved"

c# - 从已编译的 DLL 中获取所有 XAML 文件