当DependencyProperty
设置的FrameworkPropertyMetadataOptions.BindsTwoWayByDefault
通过AddOwner(typeof(NewOwner))
在不同的控件中重用时,此重用包括双向绑定行为,还是应该像AddOwner(typeof(NewOwner, new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault))
一样设置
我希望它确实如此,但不知怎的,它看起来并没有。当您使用属性上的GetMetadata检查元数据时,我无法检查添加的所有者。
见这个例子:
public class MyControl : Control
{
public object SelectedItem
{
get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
public static readonly DependencyProperty SelectedItemProperty = ListBox.SelectedItemProperty.AddOwner(typeof(MyControl));
}
然后检查:
var x = ListBox.SelectedItemProperty.GetMetadata(typeof(ListBox)) as FrameworkPropertyMetadata;
bool bx = x.BindsTwoWayByDefault; // true;
var y = MyControl.SelectedItemProperty.GetMetadata(typeof(MyControl)) as FrameworkPropertyMetadata;
bool by = y.BindsTwoWayByDefault; // null pointer excpetion