参考:WPF控件的Binding.Mode=Default的默认值是什么?-腾讯云开发者社区-腾讯云
另外这里给一个案例,
我想通过:
cs
FieldInfo field = typeof(RadNumericUpDown).GetField("ValueProperty",
BindingFlags.Public | BindingFlags.Static);
结果发现field为null,
var a = new RadNumericUpDown();
var b = a.Value;
通过new一个新的RadNumericUpDown的对象,通过F12查看Value定义,发现定义在基类上:
cs
public double? Value
{
get => (double?) this.GetValue(RadRangeBase.ValueProperty);
set => this.SetValue(RadRangeBase.ValueProperty, (object) value);
}

然后把代码改为:
cs
// 从基类 RadRangeBase 获取
var field = typeof(RadRangeBase).GetField("ValueProperty",
BindingFlags.Public | BindingFlags.Static);
if (field != null)
{
var valueProperty = field.GetValue(null) as DependencyProperty;
// 关键:将 metadata 转换为 FrameworkPropertyMetadata
//PropertyMetadata是FrameworkPropertyMetadata的基类
var metadata = valueProperty.GetMetadata(typeof(RadNumericUpDown))
as FrameworkPropertyMetadata;
if (metadata != null)
{
Console.WriteLine($"BindsTwoWayByDefault: {metadata.BindsTwoWayByDefault}");
// 输出应该是: BindsTwoWayByDefault: True
}
//Console.WriteLine($"BindsTwoWayByDefault: {metadata.BindsTwoWayByDefault}");
}