【发布时间】:2013-04-09 05:14:01
【问题描述】:
我想创建一个特殊的DataTrigger 继承TriggerBase<FrameworkElement>。与DataTrigger 类似,BindingBase 类型的属性已在MyDataTrigger 类中定义。
我怎样才能听到它以跟踪它的变化?
public class MyDataTrigger : TriggerBase<FrameworkElement>
{
...
/// <summary>
/// [Wrapper property for BindingProperty]
/// <para>
/// Gets or sets the binding that produces the property value of the data object.
/// </para>
/// </summary>
public BindingBase Binding
{
get { return (BindingBase)GetValue(BindingProperty); }
set { SetValue(BindingProperty, value); }
}
public static readonly DependencyProperty BindingProperty =
DependencyProperty.Register("Binding",
typeof(BindingBase),
typeof(MyDataTrigger),
new FrameworkPropertyMetadata(null));
}
更新:
主要问题是我不知道如何找到关联的BindingBase DependencyProperty。我知道如何听 DP;
void ListenToDP(object component, DependencyProperty dp)
{
DependencyPropertyDescriptor dpDescriptor = DependencyPropertyDescriptor.FromProperty(dp, component.GetType());
dpDescriptor.AddValueChanged(component, DPListener_ValueChanged);
}
其中DPListener_ValueChanged 是EventHandler 代表。此处,component 参数值为this.AssociatedObject。
【问题讨论】:
-
说
BindingBase关联的DP总是DataContext是真的吗?
标签: c# wpf binding datatrigger