我有一个用户控件,我在其中添加了一个名为" ImageBinding"的依赖项属性。在BindingBase类型中,我的问题是如何在Xaml中初始化此属性? 例如,如果我有一个名为Value of int类型的依赖项属性,则在xaml中我将其初始化为:
Value="1"
或
Value={Binding Age}
但是如果我的属性类型是BindingBase呢?
答案 0 :(得分:0)
我将ImageBinding更改为CLS属性,正如AndrewS建议的那样,它可以正常工作。
答案 1 :(得分:0)
就我而言,我正在创建AttachedProperty,因此这意味着无法使用常规的CLR属性。
技巧是将DependencyProperty类型声明为BindingExpressionBase而不是BindingBase。
然后您可以从BindingExpressionBase.ParentBindingBase属性进入BindingBase。
public static class Example
{
public static BindingExpressionBase GetMyBinding(DependencyObject obj)
{
return (BindingExpressionBase)obj.GetValue(MyBindingProperty);
}
public static void SetMyBinding(DependencyObject obj, BindingExpressionBase value)
{
obj.SetValue(MyBindingProperty, value);
}
public static readonly DependencyProperty MyBindingProperty =
DependencyProperty.RegisterAttached(
name: "MyBinding",
propertyType: typeof(BindingExpressionBase),
ownerType: typeof(Example),
defaultMetadata: new FrameworkPropertyMetadata(null));
}
DependencyObject obj = ...;
BindingBase bb = Example.GetMyBinding(obj)?.ParentBindingBase;