繁体   English   中英

附加属性:检查绑定

[英]Attached property: Check binding

简短的问题

在运行时,有没有一种快速的方法来知道特定的附加属性所绑定的内容?

详情

我正在调试UserControl(继承ItemsControl ),该控件通过样式将其项的Canvas.LeftCanvas.Top绑定到ViewModel对象的两个属性。 在运行时,我将断点放置在某个位置,并希望检查Canvas.Left附加属性的绑定。

请注意,我不想看到某项的附加属性的当前值。 通过检查QuickWatch或“即时”窗口中Canvas.GetLeft(myItem)的值,我可以轻松地做到这一点。 我想在此处检查实际绑定,即此附加属性为myItem绑定到的VM属性名称。

我已经尝试过Snoop,不幸的是它没有显示附加属性的绑定(如果我没有错过明显的事情的话)。

在运行时是否有一种快速的方法来知道特定的附加属性所绑定的对象

是的,只是在某处(在您的窗口中)覆盖附加属性:

<Window x:Class="WpfApplication1.MainWindow" ... >
    <Grid Canvas.Top="123"/>
</Window>

和代码

public MainWindow()
{
    InitializeComponent();
    Canvas.TopProperty.OverrideMetadata(typeof(MainWindow), new FrameworkPropertyMetadata((d, e) =>
    {
        // you will get here for each Canvas.Top set in MainWindow
        MessageBox.Show(d.ToString());
    }));
}

您可以通过编程方式获得附加属性绑定,方法与获得常规依赖项属性绑定的方法相同。 即从后面的代码中获取名称为myItemsControl的控件的Canvas.LeftProperty附加属性绑定:

BindingExpression bindingExpression = myItemsControl.GetBindingExpression(Canvas.LeftProperty);
Binding parentBinding = bindingExpression.ParentBinding;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM