DataBinding不适用于继承的DependencyProperty

时间:2012-04-08 11:06:56

标签: c# .net wpf xaml

我有一个基类和另一个继承自基类的类。 基类有一个DependencyProperty(比如“MyDPProperty”):

public int MyDPProperty
 { 
   get { return (int)GetValue(MyDPPropertyProperty); } 
   set { SetValue(MyDPPropertyProperty, value); } 
 } 
public static readonly DependencyProperty MyDPPropertyProperty =DependencyProperty.Register("MyDPProperty", typeof(int), typeof(ownerclass), new UIPropertyMetadata(0));

在Window的构造函数中我写道:

SomeWpfWindow.DataContext = new ChildClass();

在我的Window的XAML代码中我有:

<TextBox x:Name="txt"
        Text="{Binding Path=MyDPProperty, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />

现在,绑定不起作用,虽然当我在代码中绑定它时它起作用:

SomeWpfWindow.txt.SetBinding(TextBox.TextProperty
                        , new Binding("MyDPProperty")
                        {
                            Source = InstanceOfChildClass,
                            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
                            Mode = BindingMode.TwoWay
                        });

1 个答案:

答案 0 :(得分:0)

您正在绑定代码中的属性。你可以给你的窗口一个名字(例如Name =“winName”)并在绑定中定义ElementName:

 x:Name="txt" Text="{Binding ElementName=winName, Path=MyDPProperty, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> 

还有其他方法,例如你可以添加一个StaticResource。这个链接可能会有所帮助:

http://blog.jayway.com/2011/05/17/bind-from-xaml-to-property-defined-in-code-behind/