WPF绑定到我自己的属性

WPF绑定到我自己的属性

问题描述:

我创建了我自己的UserControl,它具有一些从某些东西计算出来的属性,我们称它为Result。现在,我想把这个控件放在一个Grid上,并且我有一些buisness对象。我想将此对象中的属性绑定到我的属性Result。所以,我做这样的事情:WPF绑定到我自己的属性

当然
<MyControl Result="{Binding PropertyInObject}" ... 

中DataContext设置和其他属性的绑定(WPF属性)工作。但是这不是。 首先它拍摄一个异常,说我不能绑定到非依赖项属性。所以我把它注册为一个。现在它没有例外,但也没有完成工作。那么我该怎么做?

+0

在调试器中运行应用程序,并看看VS输出窗口。在那里打印绑定错误消息。 – Jon 2011-03-09 18:17:23

+0

你可以显示你的控件的代码和实例化它的XAML吗? – devdigital 2011-03-09 18:23:11

+0

[WPF绑定到我自己的属性]的可能重复(http://*.com/questions/5249922/wpf-binding-to-my-own-property) – 2011-03-09 19:02:18

没有看到您的代码和问题描述,听起来您的“结果”属性位于用户控件的代码隐藏中。如果这是真的,那么您需要创建“结果”作为依赖项属性。然后你可以用另一种方法设置你的结果值(例子是使用SetResult())

希望这会有所帮助。 (这里是获得一个依赖属性的外壳到你的代码,在VS 2010中的一个片段,键入“propdp”,然后按下TAB键两次。)

public int Result 
    { 
     get { return (int)GetValue(ResultProperty); } 
     set { SetValue(ResultProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for Result. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty ResultProperty = 
     DependencyProperty.Register("Result", typeof(int), typeof(MyClassName), new UIPropertyMetadata(0)); 

    private void SetResult() 
    { 
     int resultValue = 0; 
     // Do calculations 
     Result = 0; 
    } 

这个问题可能是你认为的绑定双向默认情况下,但它不是。在开发自定义控件时,您在定义属性时确实需要仔细考虑。

要定义默认属性双向(你通常想要的),你需要的东西是这样的:

public static readonly DependencyProperty PropProperty = 
     DependencyProperty.Register("Prop", typeof(Boolean), typeof(MyControl), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.**BindsTwoWayByDefault**));