是否可以创建BindingBase类型的属性
本文关键字:类型 属性 BindingBase 创建 是否 | 更新日期: 2023-09-27 18:00:12
我有一个用户控件,我在其中添加了BindingBase类型的名为"ImageBinding"的依赖属性,我的问题是如何在Xaml中初始化此属性?例如,如果我有一个名为Value的int类型的依赖属性,在xaml中,我会这样初始化它:
Value="1"
或
Value={Binding Age}
但是如果我的属性类型是BindingBase呢?
我按照AndrewS的建议将ImageBinding更改为CLR属性,并且它有效。
在我的例子中,我正在创建一个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;