WPF绑定到我自己的属性

WPF绑定到我自己的属性,wpf,binding,Wpf,Binding,我创建了我自己的UserControl,它有一些属性,这些属性是根据某个东西计算出来的,我们称之为Result。现在,我想把这个控件放在一个网格上,我有一些business对象。我想将此对象中的属性绑定到我的属性结果。所以我做了这样的东西: <MyControl Result="{Binding PropertyInObject}" ... public static readonly DependencyProperty PropProperty = Dependenc

我创建了我自己的UserControl,它有一些属性,这些属性是根据某个东西计算出来的,我们称之为Result。现在,我想把这个控件放在一个网格上,我有一些business对象。我想将此对象中的属性绑定到我的属性结果。所以我做了这样的东西:

<MyControl Result="{Binding PropertyInObject}" ...
public static readonly DependencyProperty PropProperty =
        DependencyProperty.Register("Prop", typeof(Boolean), typeof(MyControl), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.**BindsTwoWayByDefault**));

在没有看到代码和问题描述的情况下,您的“Result”属性似乎位于用户控件的代码后面。如果这是真的,那么您需要创建“Result”作为依赖项属性。然后,您可以在另一个方法中设置结果值(例如使用SetResult()

希望这有帮助。(在VS2010中,有一个用于将依赖项属性的shell放入代码的代码片段,键入“propdp”,然后按TAB键两次。)


问题可能是您假设绑定在默认情况下是双向的,但事实并非如此。在开发自定义控件时,在定义属性时确实需要仔细考虑

要在默认情况下双向定义属性(您通常需要的),您需要以下内容:

<MyControl Result="{Binding PropertyInObject}" ...
public static readonly DependencyProperty PropProperty =
        DependencyProperty.Register("Prop", typeof(Boolean), typeof(MyControl), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.**BindsTwoWayByDefault**));

在调试器中运行应用程序,并查看VS输出窗口。绑定错误消息打印在那里。您能显示控件的代码和实例化它的XAML吗?可能与您在不到一小时前发布的问题完全相同。请阅读下面的内容,并欢迎访问SO。